2016-07-04 55 views
1

只有當命中的gameobject不在畫布中時,此腳本纔會在控制檯上顯示消息。在位於畫布內的按鈕釋放鼠標按鈕時,該腳本不會調試任何內容。我怎樣才能解決這個問題?RaycastHit問題與畫布?

RaycastHit hit; 

void Update() 
{ 
    if(Input.GetMouseButtonUp(0)) 
    { 
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
     //RayHit hit; 
     if(Physics.Raycast(ray, out hit)) 
     { 
      // do what you want 
      Debug.Log(hit.collider.gameObject.tag); 
     } 
    } 
} 
+0

你的意思是說畫布和UI一樣嗎?如果是這樣,你只是做錯了,請閱讀[關於統一用戶界面的教程](https://unity3d.com/learn/tutorials/topics/user-interface-ui)。 – Logman

回答

1

您可以像這樣使用來獲取單擊哪個UI對象。

if (Input.GetMouseButtonDown(0)) 
    { 
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 


     if (EventSystem.current.IsPointerOverGameObject()) 
     { 
      Debug.Log(EventSystem.current.currentSelectedGameObject.GetComponent<Text>().name); 

     } 

EventSystem.current.currentSelectedGameObject.GetComponent()。名稱

將返回點擊的對象和

EventSystem.current.IsPointerOverGameObject()

將檢查一個UI對象是否被點擊。