Unity獲取未激活游戲對象的方法 、坐標轉換


一、獲取已激活游戲對象
1、  Gameobject.Find("游戲對象名")  //根據對象名直接獲取游戲對象
  這個方法可以找到指定的對象,但是一些缺陷。第一,如果場景中有重名,此方法找到的是Hierarchy從上至下第一次出現此對象名的對象。第二,如果對象的activeSelf為false,那么這個方法永遠無法找到對象。
1.1、  解決上述第一個問題(重名)的方法:
  Gameobject.Find("Parent/Son/游戲對象名")  //通過路徑找,路徑間用 / 隔開
1.2、  解決第二個問題:
  Transform.Find("游戲對象名")  
  這個方法可以找到對象的位置,無論對象激活與否
  可以先找到對象的根節點,然后在根節點里使用方法(此方法只能找子節點):
  GameObject  root  =   GameObject.Find("根節點");
  GameObject  son  =   root.transform.Find("對象名").gameObject;
  若根節點下還有父節點,同樣可以用使用路徑找到。


二、通過tag標簽找對象
  GameObject>FindGameObjectsWithTag("tag")
  GameObject.FindWithTag("tag")



https://ke.qq.com/user/index/index.html#cid=231713&tid=100273324&fr=2&term_id=100273324




【Unity3D的四種坐標系】

1、World Space(世界坐標):我們在場景中添加物體(如:Cube),他們都是以世界坐標顯示在場景中的。transform.position可以獲得該位置坐標。

2、Screen Space(屏幕坐標):以像素來定義的,以屏幕的左下角為(00)點,右上角為(Screen.width,Screen.height),Z的位置是以相機的世界單位來衡量的。注:鼠標位置坐標屬於屏幕坐標,Input.mousePosition可以獲得該位置坐標,手指觸摸屏幕也為屏幕坐標,Input.GetTouch(0).position可以獲得單個手指觸摸屏幕坐標。

  Screen.width = Camera.pixelWidth

  Screen.height = Camera.pixelHeigth

3、ViewPort Space(視口坐標):視口坐標是標准的和相對於相機的。相機的左下角為(00)點,右上角為(11)點,Z的位置是以相機的世界單位來衡量的。

4、繪制GUI界面的坐標系:這個坐標系與屏幕坐標系相似,不同的是該坐標系以屏幕的左上角為(00)點,右下角為(Screen.width,Screen.height)。

【四種坐標系的轉換】

1、世界坐標→屏幕坐標:camera.WorldToScreenPoint(transform.position);這樣可以將世界坐標轉換為屏幕坐標。其中camera為場景中的camera對象。

2、屏幕坐標→視口坐標:camera.ScreenToViewportPoint(Input.GetTouch(0).position);這樣可以將屏幕坐標轉換為視口坐標。其中camera為場景中的camera對象。

3、視口坐標→屏幕坐標:camera.ViewportToScreenPoint();

4、視口坐標→世界坐標:camera.ViewportToWorldPoint();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM