使用 UnityEvent 在 Unity 中实现事件系统
在 Unity 中,事件系统支持游戏中不同组件和对象之间的通信。使用 C# 方法时,您可以使用 UnityEvent 创建自定义事件。
用于自定义事件的 UnityEvent
要使用 UnityEvent 创建自定义事件,请在您的脚本,如下所示:
public UnityEvent whoa;
UnityEvent 提供了一种简单直观的方法来处理事件,而不需要显式委托或函数
示例实现
在您的“BigScript.cs”脚本中:
using UnityEngine; using UnityEngine.Events; public class BigScript : MonoBehaviour { [Header("Here's a cool event! Drag anything here!")] public UnityEvent whoa; private void YourFunction() { whoa.Invoke(); } }
在检查器中,您可以拖放其他脚本到“whoa”事件字段。这些脚本将包含触发“whoa”事件时调用的函数。
要从“BigScript”组件内触发该事件,只需对“whoa”事件调用 Invoke() 方法即可。
处理自定义事件中的参数
对于需要参数的事件,您可以定义您的拥有通用类型参数的 UnityEvent 子类。例如,要创建一个采用 float 参数的事件:
[System.Serializable] public class _UnityEventFloat : UnityEvent<float> {}
然后,在您的脚本中,您可以定义该事件并按如下方式使用它:
public _UnityEventFloat changedLength; void ProcessValues(float v) { // ... changedLength.Invoke(1.4455f); }
拖动时检查器中事件字段的其他脚本,请确保选择“动态浮动”部分来处理参数
实际实现
对于多个对象需要订阅公共事件的特定场景,您可以创建一个自定义脚本并将其附加到预制件“工作人员”类别。在该脚本中,您可以订阅“Day is done”事件。当事件被触发时,脚本将为“staff”成员执行必要的操作。
这种方法允许您在预制件中集中订阅事件,无需手动订阅每个单独的实例化对象.
以上是UnityEvent 如何简化 Unity 游戏开发中的事件处理?的详细内容。更多信息请关注PHP中文网其他相关文章!