如何在Unity中传递Event对象?

时间:2015-05-25 20:57:24

标签: c# object events unity3d

我们说我的场景中有3个GUI按钮。对于每个按钮,我在检查器中添加了指针输入和指针退出事件触发器。该事件在脚本中处理,该脚本被添加到空游戏对象中。这些功能现在非常简单:

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

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

它工作正常,但我想知道如何在检查器面板中传递一些字符串/数字的情况下识别哪个按钮悬停。是否有一些事件对象被发送?我似乎找不到任何东西。或者根本不可能? 非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以创建函数public void OnPointerEnter(Button b){}并从检查器中静态定义按钮,但这不会在运行时更改,并且将始终为该组件的实例传递相同的值。

新的Event系统有2种模式,动态和静态,

静态模式最多可以包含一个arg,即" SetActive"游戏对象上的函数可以设置为每次都使用相同的true / false值进行调用,这在checkctor中定义(这适用于bool,string和任何继承自" UnityEngine.Object")

动态模式是在事件中定义类型的模式,IE Toggle可以在每个" Click"由调用" x.Invoke(m_IsToggled)"的类定义的事件,但是动态版本可以用作静态版本,使用"静态"您在下拉列表中看到的功能。

但是在你的情况下,EventTrigger类使用没有任何动态值的UnityEvent来传递,所以你只能使用静态版本并调用一个函数,该函数接受一个参数,bool,string或者继承自" UnityEngine.Object"