2017-06-23 8 views
0

仮説:OnClickDown関数を使用してオブジェクトをクリックしたときにそのオブジェクトにデータを返すスクリプトが添付された "InputManager"という空のGameObjectがあります。Unityに添付されたスクリプトを使用しないで、どのオブジェクトでOnMouseDownを使用しますか?

問題点:OnMouseDown関数は、関数が含まれているスクリプトを含むオブジェクトでのみ機能します。

質問:OnMouseDownのこの制限は、関数呼び出しでスクリプトが添付されたオブジェクトに対してのみ機能します。 (注:シーン内のすべてのオブジェクトにスクリプトを追加することを避けようとしています)

+0

OnMouseDownイベントを使用することはできません。InputManagerスクリプトでマウスボタンダウンイベントを検出した後、カーソルからレイキャストを撮影してヒットしたかどうかを確認しましたか? – Serlite

答えて

1

Raycastを使用して、CollidersですべてのGameObjectを検出しようとすることができます。

https://docs.unity3d.com/ScriptReference/Physics.Raycast.html 

ヒットしているすべてのオブジェクトが返され、単純なGameObjectsとして動作します。そして、あなたはあなたのスクリプトコンポーネントを操作することなく

https://docs.unity3d.com/ScriptReference/Component.SendMessage.html 

でメッセージを送信することができます。

それはsomethinkのようになります。

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
RaycastHit hit; 
if (Physics.Raycast(ray, out hit)) 
{ 
    hit.collider.gameObject.SendMessage("BeingMouseClicked"); 
} 

"BeingMouseClicked" の文字列は一例のメソッド名です。

関連する問題