1. 程式人生 > >unity核心類圖

unity核心類圖

在這裡插入圖片描述

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 類
   *     -- 靜態方法
   *     -- 根據型別查詢物件