1. 程式人生 > >【Untiy&NGUI】判斷滑鼠座標位置與實際螢幕座標的比較

【Untiy&NGUI】判斷滑鼠座標位置與實際螢幕座標的比較

判斷滑鼠座標位置

在Unity中,如果 報錯 有的物體 沒有例項化,但是程式依舊可以執行

一定要注意,用IF語句判斷其不為空

否則,Unity系統工程崩潰,那就很麻煩了

記得要 定義變數

    private Vector3 stwp;

以下是NGUI下使用的程式碼

 if (UICamera.currentCamera != null)
        {
            stwp = UICamera.currentCamera.ScreenToWorldPoint(Input.mousePosition);
        }
            Debug.Log(stwp);

UICamera 為NGUI 使用 的camera

根據參考資料4,5

以下是Unity 自帶的 UGUI 使用的程式碼

 if (Camera.main != null)
        {
            stwp = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        }

        Debug.Log(stwp);


使用參考資料1,為(0,1,0)Z的值可以忽略,因為是在一個點上的直線

對應的座標範圍如下所示


那麼就只用比較 滑鼠的螢幕座標 和 螢幕座標(0,1,0)的大小就行了

圓圈代表物體,大的長方形方塊代表物品詳細資訊欄,小的長方塊代表其他資訊

參考資料2,可以知道怎麼設定Unity的NGUI的Widget的Pivot

參考資料4,就可以 根據實際 螢幕的解析度 大小 ,來 調整 滑鼠的螢幕座標大小

--------------------------------------------------------------------------------------------------------------------------

UGUI,Unity自帶的官方UI

UGUI,的 螢幕 的 大小

Debug.Log("Screen.width   " + Screen.width+ "   Screen.widthheight   " + Screen.height);

UGUI 螢幕的 中心點

Debug.Log("Screen.width/2   " + Screen.width/2+ "   Screen.widthheight/2   " + Screen.height/2);



滑鼠在螢幕上的座標
if (Input.GetMouseButtonDown(0))
        {
            Debug.Log(" mousePositionOnScreen  " + mousePositionOnScreen);
        }

//獲取當前物體在螢幕的位置。根據物體 的3D世界座標 轉換 為 螢幕 上的2D 座標
        screenPosition = Camera.main.WorldToScreenPoint(transform.position);

螢幕解析度 大小 的 座標圖 ,如下所示


--------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------

參考資料:

3.

4.

7

8..