【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..