【发布时间】:2016-02-11 23:37:32
【问题描述】:
目前,当我尝试检测对象是否已被鼠标单击/交互时,我会在该游戏对象上创建一个脚本,然后定义 void OnMouseDown() 并在其中应用功能。如果我想在另一个不附加到 GameObject 的脚本中触发函数,我会通过 GetComponent<>() 引用调用它。
有没有办法从另一个 GameObject 上的脚本向 OnMouseDown 事件添加回调?可能以相同的方式分配和调用委托/事件?比如:gameObjectReference.GetComponent<BoxCollider>().onmousedownevent += MyFunction; 这样它会在鼠标按下时自动调用这个函数?
注意:我知道您可以使用光线投射来实现类似的效果,但我的问题是关于将回调附加到现有 Unity 事件。
【问题讨论】:
-
当然,使用 Unity 事件 - 您已经准确地描述了它们。只需点击手册或十亿质量检查或教程
-
我投票决定将此问题作为离题结束,因为手册中的完整信息可立即获得 unity3d.com/learn/tutorials/modules/intermediate/scripting/… 也请查看 forum.unity3d.com/threads/…
-
顺便说一句,如果您正在触摸/输入,这就像统一中最基本的、压倒性的问题:answers.unity3d.com/questions/784617/…
-
@JoeBlow 那么如何将它附加到触发 OnMouseDown 的预先存在的事件?因为我不想在对象上创建额外的脚本来触发此类事件。您链接的视频描述了如何创建事件/委托系统,我不想创建一个新的,我想将回调附加到该对象的预先存在的统一事件触发器,这就是我不'不明白..?
-
在相关的 OnMouseDown 中,只是 more.Invoke,然后将任何你想要的东西拖到
more这是一个public UnityEvent。它“少于”一行代码,您只需拖动即可。