2016-02-11 78 views
1

目前,当我试图检测对象是否已点击/与之交互的鼠标,我对游戏物体创建一个脚本,然后定义void OnMouseDown()和内应用的功能。如果我然后想要在另一个脚本中触发一个功能而不是附加到游戏对象,我通过GetComponent<>()引用调用它。团结 - 添加回调到游戏物体onmousedown事件事件

有没有办法从另一个GameObject上的脚本添加一个回调到OnMouseDown事件?可能以相同的方式分配和调用委托/事件?例如:gameObjectReference.GetComponent<BoxCollider>().onmousedownevent += MyFunction;这样它会自动在鼠标上调用此函数?

注:我知道你可以使用raycasting来实现类似的事情,但我的问题是关于将回调附加到现有的Unity事件。

+0

当然,使用Unity事件 - 你已经完全描述了它们。只需点击一下手册或十亿份QA或教程 – Fattie

+0

我投票结束这个问题作为题外话题,因为手册中提供了完整的信息https://unity3d.com/learn/tutorials/modules/intermediate/scripting/事件也检查出http://forum.unity3d.com/threads/unityevent-where-have-you-been-all-my-life.321103/ – Fattie

+0

只是顺便说一句,如果你触摸/输入,这就像是根本,压倒性的统一问题:http://answers.unity3d.com/questions/784617/how-do-i-block-touch-events-from-propagating-throu.html – Fattie

回答

1

1)我明白你的意思是这个

pseudocode: 
gameObjectReference.GetComponent<BoxCollider>().onmousedownevent += MyFunction 

什么感觉,也没有办法做到这一点。

2)请理解:它是难以置信的容易实现您的目标(优雅)。在脚本“b”中添加一个UnityEvent,在OnMouseDown中调用它。拖动任何你想要的东西。对于任何阅读谁是新的团结,请尝试在一般UnityEvent,因为它就是不断用

3)AI何况你可以你想要做什么用的OnPointerDown(PointerEventData eventData)系统鬼混,但这只是强调你不能做你所要求的,用OnMouseDown做。

对不起,这个严峻的消息。

+0

不用担心,谢谢你的评论和最终答案。 :) – Zze