2016-08-10 3 views
0

eventTriggerを使用して、ポインターが画像を入力したときにイベントをトリガーします。基本的には、私はimagecanvasの中に持っています。 imageで私はイベントタイプPointer Enterを追加し、EventTriggerコンポーネントを追加し、その後、私のスクリプトの機能にリンクされていますUnity3dイベントトリガー - オンポインター入力画像

public void PointerEnter(){ 
    Debug.Log ("pointer enter"); 
} 

これが正常に動作します。しかし、スクリプトにデータを渡したいのですが?たとえば、imageの名前です。通常Unity3draycastシナリオでは、我々はこれを行うことができます。

if (Physics.Raycast (ray0, out hit)) { 
       Debug.Log (hit.collider.gameObject.name);//<-- get the name 
      } 

しかし、どのように我々はEventTriggerを使用する場合は、それを行うには?

+0

あなたは 'ヌルReference'を取得EventSystem.current.currentSelectedGameObject.name' EventSystem.current.currentSelectedGameObject.name – mgear

+0

'のようなものを試してみました。 – sooon

答えて

0

IPointerEnterHandlerを実装し、データをパラメータとして提供するOnPointerEnter()関数を上書きします。その情報からGameObjectの名前を取得します。

シンプルMouseEnterScriptスクリプトをCanvasに添付すると、すべてのマウス入力がすべてのUIで検出されます。

using UnityEngine.EventSystems; 

public class MouseEnterScript: MonoBehaviour, IPointerEnterHandler 
{ 
    public void OnPointerEnter(PointerEventData eventData) 
    { 
     Debug.Log("Name: " + eventData.pointerCurrentRaycast.gameObject.name); 
     Debug.Log("Tag: " + eventData.pointerCurrentRaycast.gameObject.tag); 
     Debug.Log("GameObject: " + eventData.pointerCurrentRaycast.gameObject); 
    } 
} 
+0

それは動作しますが、私は4つの画像を並べて配置して、最初に入力した画像でのみ動作しますが、すべての画像を終了して再び入力するまで、再び 'OnPointerEnter'を呼び出しませんでした。 – sooon

+0

私はあなたの現在の問題を理解していません。画像が異なるGameObjectsである限り、各GameObject/Iimageでマウス入力を検出する必要があります。あなたの情報のために、 'OnPointerEnter'はそれぞれの画像に1回だけ呼び出されます。それを次の画像に移動すると、 'OnPointerEnter'が再び呼び出されますが、一度呼び出されます。繰り返し呼び出されることはありません。最初に呼び出されたときに値をtrueに設定し、クリックされた画像の名前を取得することができます。リリース時に、値をfalseに設定します。 http://pastebin.com/CrZLQmTK – Programmer

関連する問題