如何在Unity中传递一个Event对象

本文关键字:一个 对象 Event Unity | 更新日期: 2023-09-27 17:50:39

假设我的场景中有3个GUI按钮。对于这些按钮,我在检查器中添加了指针进入和指针退出事件触发器。这个事件是在一个脚本中处理的,它被添加到一个空的游戏对象中。这些函数现在完全是微不足道的:

public void OnPointerEnter() {
    print("in");
}
public void OnPointerLeave() {
    print("out");
}

它工作得很好,但我想知道我如何识别哪个按钮悬停没有传递一些字符串/数字在检查器面板。是否有某个事件对象被发送进来?我似乎什么也找不到。还是根本不可能?非常感谢!

如何在Unity中传递一个Event对象

你可以创建函数public void OnPointerEnter(Button b){},并从检查器中静态地定义按钮,尽管这在运行时不会改变,并且总是为该组件的实例传递相同的值。

新的事件系统有两种模式,动态和静态,

静态模式最多只能接受一个参数,即游戏对象上的"SetActive"函数可以设置为每次都以相同的true/false值调用,这是在检查器中定义的(这适用于bool, string和任何从"UnityEngine.Object"继承的东西)

动态模式是在事件中定义类型的模式,IE Toggle可以在每个"Click"事件上传递一个动态bool,该事件由调用"x.Invoke(m_istoggle)"的类定义,动态版本可以作为静态版本使用,通过使用"静态"函数,你可以在下拉列表中看到。

然而,在你的情况下,EventTrigger类使用一个没有任何动态值传递的UnityEvent,所以你只能使用静态版本并调用一个函数,该函数接受一个参数,要么是bool,要么是string,要么是继承自UnityEngine的任何东西。div对象"