https://gametorrahod.com/how-to-make-a-custom-signal-receiver-with-emitter-parameter/
添加发射器
public class SignalEmitterWithBool : ParameterizedEmitter<bool> { }
//Put this in its own file
public class SignalEmitterWithInt : ParameterizedEmitter<int> { }
public class SignalEmitterWithFloat : ParameterizedEmitter<float> { }
public class ParameterizedEmitter<T> : SignalEmitter
{
public T parameter;
}
添加接收器
public class SignalReceiverWithParams : MonoBehaviour, INotificationReceiver
{
public SignalAssetEventPair[] signalAssetEventPairs;
[Serializable]
public class SignalAssetEventPair
{
public SignalAsset signalAsset;
public ParameterizedEvent events;
[Serializable]
public class ParameterizedEvent : UnityEvent<float> { }
}
public void OnNotify(Playable origin, INotification notification, object context)
{
if (notification is ParameterizedEmitter<float> boolEmitter)
{
var matches = signalAssetEventPairs.Where(x => ReferenceEquals(x.signalAsset, boolEmitter.asset));
foreach (var m in matches)
{
m.events.Invoke(boolEmitter.parameter);
}
}
}
}
添加Track
-
要接受的gameobject要添加自带的接收器和自定义的带参数的接收器组件
-
选择对应的方法
-
拖拽接收器
-
添加指定的signal
- 设置参数
然后就OK了