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 类
   *     -- 静态方法
   *     -- 根据类型查找对象 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值