TimeLine之Signal功能

Unity 2019.1中新推出的Timeline Signals信号功能。

新功能:Marker标记

Marker标记功能可以向Timeline添加的新内容,它用于表示一个时间点。

标记可以在Timeline上和剪辑一样添加和处理,能够使用选取,复制粘贴和编辑模式等功能。就像剪辑一样,标记也有具体类型,例如:剪辑分为动画剪辑、激活剪辑、控制剪辑等类型。

在Unity 2019.1中,Timeline提供了首个内置标记:Signal Emitter信号发射器标记。

Signal Emitter信号发射器

Signal Emitter信号发射器用于在Timeline经过特定时间点的时候,触发场景状态的改动。

我们使用了信号(Signal)而不是事件(Event),因为信号有“广播”的特点,而不会混淆已有的Unity事件和动画事件。

1、如何添加Signal Emitter信号发射器

Signal Emitter信号发射器可以添加到Timeline和轨道上,但会有某些限制。

添加到Timeline上:这是Unity 2019.1版本的新概念,信号可以添加到Timeline本身,此时不需要使用轨道。

添加

### Unity Timeline 中的事件广播机制 在 Unity 的 Timeline 系统中,`PlayableDirector` 是控制整个时间轴的核心组件。为了实现事件广播功能,可以利用 `TimelineEventTrack` 和自定义脚本来创建事件触发器[^1]。 以下是具体方法: #### 创建 Event Track 并绑定回调函数 通过拖拽对象到场景中的特定轨道上,开发者可以在指定的时间点调用预设的方法或执行逻辑操作。这通常涉及以下几个步骤: 1. **添加 Event 轨道**: 在 Timeline 编辑器界面下拉菜单找到并选择 “Add Track”,接着挑选合适的类型比如 ScriptableObject 或者直接关联 C# 类型作为载体。 2. **编写接收消息的对象行为代码**: 下面是一个简单的例子展示如何设置当某个标记被触及时打印日志信息的功能[^2]: ```csharp using UnityEngine; using UnityEngine.Timeline; public class MyCustomBehaviour : PlayableBehaviour { public override void OnGraphStart(Playable playable) { Debug.Log("The timeline has started."); } public override void ProcessFrame(Playable playable, FrameData info, object playerData) { GameObject go = playerData as GameObject; // Assuming the clip is bound to a gameobject. if (go != null && info.weight >= 0f){ Debug.Log($"Processing frame on {go.name}"); } } } ``` 上述片段展示了如何继承 `PlayableBehaviour` 来定制自己的播放期间的行为模式,并且可以通过参数传递进一步扩展其灵活性[^3]。 #### 自动化与动态调整 对于更复杂的交互需求,则可能需要用到信号资产(Signals),它们允许不同部分之间互相通知而无需硬编码依赖关系。SignalReceiver 组件能够监听来自任何地方发出的 Signal 对象实例的通知。 例如,在项目里引入官方插件包 PostProcessStack 后就可以轻松完成诸如淡入淡出效果之类的视觉转换动作序列安排工作了[^4]。 总之,借助于强大的 API 支持以及高度模块化的架构设计思路,Unity 提供了一个非常灵活的方式来构建基于时间驱动的应用程序或者游戏特性开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值