Udemy-Unity制作类暗黑破坏神游戏记录-P64

2024-09-15
108看过
进入到动画触发时,当点击地面,会发现玩家依然可以行动,所以需要取消玩家的控制权,等触发动画播放完才可以行动。

这里引入了事件的概念和使用,事件主要是用于类和类或者对象之间的通知。
CinematicControlRemove:

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Playables;
  5. namespace RPG.Cinematics
  6. {
  7.     //相机控制移除
  8.     public class CinematicControlRemove : MonoBehaviour
  9.     {
  10.         private void Start()
  11.         {
  12.             GetComponent<PlayableDirector>().played += DisableControl;
  13.             GetComponent<PlayableDirector>().stopped += EnableControl;
  14.         }
  15.         void DisableControl(PlayableDirector pd)
  16.         {
  17.             print("移除控制");
  18.         }
  19.         void EnableControl(PlayableDirector pd)
  20.         {
  21.             print("启用控制");
  22.         }
  23.     }
  24. }
复制代码
FakePlayableDirector:该脚本仅仅用于教学,后面会被删除

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEditor.Timeline.Actions;
  5. using UnityEngine;
  6. namespace RPG.Cinematics
  7. {
  8.     //
  9.     public class FakePlayableDirector : MonoBehaviour
  10.     {
  11.         // 定义一个事件,参数为浮点数,事件触发时会通知订阅者
  12.         public event Action<float> onFinish;
  13.         private void Start()
  14.         {
  15.             // 使用 Invoke 方法在 3 秒后调用 OnFinish 方法
  16.             Invoke("OnFinish",3f);
  17.         }
  18.         void OnFinish()  // OnFinish 方法会在 3 秒后被调用
  19.         {
  20.             onFinish(4.3f);//触发 onFinish 事件,并传递一个浮点数 4.3f
  21.         }
  22.     }
  23. }
复制代码


回复

举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表