进入到动画触发时,当点击地面,会发现玩家依然可以行动,所以需要取消玩家的控制权,等触发动画播放完才可以行动。
这里引入了事件的概念和使用,事件主要是用于类和类或者对象之间的通知。
CinematicControlRemove:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Playables;
-
- namespace RPG.Cinematics
- {
- //相机控制移除
- public class CinematicControlRemove : MonoBehaviour
- {
-
- private void Start()
- {
- GetComponent<PlayableDirector>().played += DisableControl;
- GetComponent<PlayableDirector>().stopped += EnableControl;
- }
- void DisableControl(PlayableDirector pd)
- {
- print("移除控制");
- }
-
- void EnableControl(PlayableDirector pd)
- {
- print("启用控制");
- }
- }
- }
-
复制代码
FakePlayableDirector:该脚本仅仅用于教学,后面会被删除
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEditor.Timeline.Actions;
- using UnityEngine;
-
- namespace RPG.Cinematics
- {
- //
- public class FakePlayableDirector : MonoBehaviour
- {
- // 定义一个事件,参数为浮点数,事件触发时会通知订阅者
- public event Action<float> onFinish;
-
- private void Start()
- {
- // 使用 Invoke 方法在 3 秒后调用 OnFinish 方法
- Invoke("OnFinish",3f);
- }
-
- void OnFinish() // OnFinish 方法会在 3 秒后被调用
- {
- onFinish(4.3f);//触发 onFinish 事件,并传递一个浮点数 4.3f
- }
-
-
- }
- }
-
复制代码
|