2016-02-11 61 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