游戏原型系列 vol.14 通过C#脚本启动时间轴-2019.3
摘要
在本教程中,我们将通过C#脚本使用Playable Director启动时间轴。
1.通过C#脚本启动时间轴
通过脚本启动时间轴可以更好地控制播放哪个时间轴以及何时播放。这对过场动画和互动电影特别有用。
通过脚本控制Playable Director时,可以在启动和停止Playable Director时调用回调函数。通常的用法是在过场动画开始时禁用玩家输入并阻止NPC /敌人的动作和移动,并在时间轴停止后恢复游戏状态。
我们的脚本还将在时间轴启动时执行一个回调函数,在时间轴停止时执行另一个回调函数。
1. 通过从GameObject下拉菜单中选择Create Empty 创建一个新的GameObject 。将其命名为Director 。
2. 通过从窗口下拉菜单中选择Sequencing(序列)>Timeline(时间线),打开“时间线”窗口。
3. 在选择了Director的情况下,单击Create(创建)来附加一个Playable Director组件并创建一个Timeline Asset(时间轴资产)(图01 )。

4. 添加并配置所需的动画轨道(图02 )。

5. 将一个名为TimelinePlayer 的新脚本组件添加到Director中,然后在脚本编辑器中将其打开。
6. 添加UnityEngine.Playables命名空间:
using UnityEngine.Playables;
7. 在类定义中,我们将创建对Playable Director和控制面板的引用:
private PlayableDirector director;
public GameObject controlPanel;
8.将“开始(Start)”更改为“唤醒(Awake)”,然后删除“更新(Update)”方法。
9. 在Awake中,我们将设置Playable Director参考并注册回调函数,以在Director启动和停止时调用它们:
director = GetComponent<PlayableDirector>();
director.played += Director_Played;
director.stopped += Director_Stopped;
在接下来的两个步骤中定义的Director_Played和Director_Stopped是返回类型为void的函数,其唯一参数为PlayableDirector类型。
10. 一旦开始播放时间轴,Director_Played将隐藏用于启动时间轴的UI面板。
private void Director_Played(PlayableDirector obj){
controlPanel.SetActive(false);
}
11. 时间轴停止后,Director_Stopped将显示UI面板。
private void Director_Stopped(PlayableDirector obj){
controlPanel.SetActive(true);
}
12. 最后,我们准备定义启动时间轴的函数:
public void StartTimeline(){
director.Play();
}
13. 完整脚本应如下所示:
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Playables;
public class TimelinePlayer : MonoBehaviour
{
private PlayableDirector director;
public GameObject controlPanel;
private void Awake()
{
director = GetComponent<PlayableDirector>();
director.played += Director_Played;
director.stopped += Director_Stopped;
}
private void Director_Stopped(PlayableDirector obj)
{
controlPanel.SetActive(true);
}
private void Director_Played(PlayableDirector obj)
{
controlPanel.SetActive(false);
}
public void StartTimeline()
{
director.Play();
}
}
14. 保存更改并返回Unity编辑器。
15. 通过从GameObject下拉菜单中选择UI >Button (按钮)来创建UI按钮。
16. 单击+ 号添加一个OnClick事件。将Director拖到Object 插槽中,然后选择TimelinePlayer > StartTimeline()(图03 )。

17. 在“层次结构”视图中选择“ Director(主管)”。在检查器的“Timeline Player(时间轴播放器)”组件中,将按钮或其父画布拖动到标有“ Control Panel(控制面板)” 的插槽中(图04 )。

18. 进入播放模式,然后单击按钮以启动时间轴。时间轴停止时,该按钮保持可见(图05 )。在播放时间轴时,它是隐藏的(图06 )。时间轴完成播放后,该按钮将再次变为可见。


19. 退出播放模式。
2.结论
时间轴是一个本来就功能强大的系统,可通过脚本进一步增强。