unity核心類圖
阿新 • • 發佈:2018-12-11
Component:提供了查詢元件的功能(從自身、從後代、從先輩)。
GetComponent:獲取當前物體其他元件型別的引用。
GetComponents:獲取當前物體所有元件引用。
GetComponentsInChildren:查詢指定型別元件(從自身開始,並搜尋所有後代)
GetComponentInChildren:查詢指定型別元件(從自身開始,並搜尋所有後代,查詢到第一個滿足條件則結束)
GetComponentsInParent:查詢指定型別元件(從自身開始,並搜尋所有先輩)
Transform:提供了查詢(根據名字、索引獲取子物體)、移動、旋轉、縮放物體的功能。
/* Transform 類 -- Variables childCount localPosition:子物體相對於父物體座標[編譯器中顯示的] localScale:子物體相對於父物體的縮放比例[編譯器中顯示的] lossyScale:(只讀)可以理解為相對於模型的縮放比(父物體.localScale * 自身物體.localScale) parent position:相對於世界座標系座標 root -- Public Functions Find :通過名稱查詢子物體. GetChild:根據索引獲取子物體 LookAt Rotate RotateAround SetParent Translate */
//通過名稱獲取子物體變換元件引用(transform只能查詢子類) //this.transform.Find("子物體名稱") //備註:如果通過路徑獲取物體,那麼路徑一定不能發生改變 Transform childTF = this.transform.Find("子物體名稱/子物體名稱"); if (GUILayout.Button("獲取所有子物體(孫子不要)")) { //寫法1 int count = transform.childCount; for (int i = 0; i < count; i++) { //根據索引獲取子物體 Transform tf = transform.GetChild(i); } //寫法2 foreach (var child in transform) { //child子物體變換元件 } } if (GUILayout.RepeatButton("自轉")) { //按下按鈕 沿Y軸旋轉1度 transform.Rotate(0, 1, 0);//沿自身座標軸 //transform.Rotate(0, 1, 0,Space.World);//沿世界身座標軸 } if (GUILayout.RepeatButton("移動")) { //移動 transform.Translate(0, 0, 1);//沿自身座標軸 //transform.Translate(0, 1, 0,Space.World);//沿世界身座標軸 } if (GUILayout.Button("LookAt")) { //注視旋轉 物體Z軸指向目標位置 transform.LookAt(targetTF); } if (GUILayout.RepeatButton("圍繞旋轉")) { // (圍繞的目標點,圍繞的軸向,圍繞的角度) transform.RotateAround(targetTF.position, Vector3.forward, 1); } if (GUILayout.RepeatButton("設定父物體")) { //將當前物體 設定為 targetTF 的子物體 transform.SetParent(targetTF); player.transform.SetParent(newParent, false);// false時指自身相對父親按原來相對世界(不歸零) //取消自己的父親 transform.SetParent(null); //刪除自己的孩子 }
遞迴查詢子物體
/// <summary>
/// 查詢子物體(遞迴查詢)
/// </summary>
/// <param name="trans">父物體</param>
/// <param name="goName">子物體的名稱</param>
/// <returns>找到的相應子物體</returns>
public static Transform FindChild(Transform trans, string goName)
{
Transform child = trans.Find(goName);
if (child != null)
return child;
Transform go = null;
for (int i = 0; i < trans.childCount; i++)
{
child = trans.GetChild(i);
go = FindChild(child, goName);
if (go != null)
return go;
}
return null;
}
GameObject 類 提供全域性查詢物體,啟用物體,新增元件
-- Variables
activeInHierarchy :理解為物體實際啟用狀態(物體自身被禁用或者父物體被禁用都為false)
activeSelf:物體在Inspector面板啟用狀態
layer
-- Public Functions
AddComponent:為遊戲物件新增元件
SetActive
-- Static Functions
* Find :根據名稱查詢遊戲物件(慎用,如同大海撈針)
* FindGameObjectsWithTag :獲取使用指定標籤的所有物體
* FindWithTag:獲取使用標籤的一個物體
Object類: 靜態方法,更具型別查詢物體
屬性
name 名稱.
靜態方法
Destroy 刪除物體.
DestroyImmediate 立即刪除(慎用)
DontDestroyOnLoad Do not destroy the target Object when loading a new Scene.
FindObjectOfType 根據型別查詢單個物體.
FindObjectsOfType 根據型別查詢所有物體.
Instantiate 生成物體
總結:
* 如何查詢某個元件引用
* Component 類
* -- 例項方法
* -- 查詢當前物體其他型別元件引用
* -- 在先輩物體中查詢指定型別元件引用
* -- 後代
*
* Transform 類
* -- 例項方法
* -- 通過名稱查詢子物體
* -- 索引
*
* GameObject 類
* -- 靜態方法
* -- 通過標籤查詢物體(單個、所有)
* -- 通過名稱找物體(慎用)
* -- 例項方法
* -- 查詢當前物體其他型別元件
* -- 在先輩物體中查詢指定型別元件引用
* -- 後代
*
* Object 類
* -- 靜態方法
* -- 根據型別查詢物件