unity TimeLine SignalTrack
先新建一个TimeLine



添加Track


using SLSC.LBE; using System; using UnityEngine; using UnityEngine.Playables; public class TestCubeReceiver :MonoBehaviour,INotificationReceiver { public void OnNotify(Playable origin, INotification notification, object context) { Debug.LogError("Test Cube Success"); } }
using System; using System.ComponentModel; using UnityEngine; using UnityEngine.Playables; using UnityEngine.Timeline; [DisplayName("Cube测试")] [Serializable] public class TestCubeSignal : Marker, INotification, INotificationOptionProvider { public PropertyName id { get; } NotificationFlags INotificationOptionProvider.flags => NotificationFlags.TriggerOnce | NotificationFlags.TriggerInEditMode; }
using System.ComponentModel; using UnityEngine.Timeline; using UnityEngine; [TrackBindingType(typeof(TestCubeReceiver))] [DisplayName("测试Cube")] public class TestCubeSignalTrack :MarkerTrack { }
相机震动例子
using System.ComponentModel; using UnityEngine.Timeline; namespace SLSC.LBE { [TrackBindingType(typeof(ShakeCameraReceiver))] [DisplayName("相机震动信号轨道")] public class ShakeCameraSignalTrack : MarkerTrack { } } using UnityEngine.Playables; using UnityEngine.Timeline; using UnityEngine; using System.ComponentModel; using System; namespace SLSC.LBE { [DisplayName("相机震动")] [Serializable] public class ShakeCameraSignal : Marker, INotification, INotificationOptionProvider { public float duration; public Vector3 offset; public int vibrato; public PropertyName id { get; } NotificationFlags INotificationOptionProvider.flags => NotificationFlags.TriggerOnce | NotificationFlags.TriggerInEditMode; } } using UnityEngine; using System; using UnityEngine.Playables; namespace SLSC.LBE { public class ShakeCameraReceiver : MonoBehaviour, INotificationReceiver { public void OnNotify(Playable origin, INotification notification, object context) { if (notification is ShakeCameraSignal) { ShakeCameraSignal signal = (ShakeCameraSignal)notification; SLSCManager.Instance.ShakeCamera(signal.duration,signal.offset,signal.vibrato); } } } } { public void ShakeCamera(float duration, Vector3 offset, int vibrato) { //震动CameraOffset物体,即mainCamera的父物体 MainCameraTrans.parent.DOShakePosition(duration, offset, vibrato); } }

浙公网安备 33010602011771号