美文网首页
Unity 中各种物体的继承关系

Unity 中各种物体的继承关系

作者: aaa000 | 来源:发表于2021-10-18 00:10 被阅读0次
    image.png

    Conponent 类:

    当前节点、父节点、子节点查找组件功能

    //组件不能直接被创建,需要先有物体  再向物体中添加组件 eg:
    GameObject obj = new GameObject();
    Light light = obj.AddComponent<Light>();
    ...
    
    //获取组件
    this.transform.GetComponent<Camera>();
    this.transform.GetComponent<MeshRender>().material.color = Color.red;
    //获取所有的组件
    var componentList = this.transform.GetComponents<Component>();
    
    //获取 自生  和 所有子节点 所有含有MeshRanderer组件的物体
    var cList = this.transform.GetComponentsInChildren<MeshRanderer>();
    foreach(var item in cList)
    {
        item.material.color = Color.red;
    }
    
    //获取本节点 上级所有节点的MeshRanderer组件
    var pList = this.transform.GetComponentsInParent<MeshRanderer>();
    

    Transform 类:

    查找变换组件功能,改变物体的大小角度位置等。

    //遍历所有的子节点Transform 组件
    foreach(Transform child in this.transform){
        print(child.name);
    }
    
    //获取父节点的变换组件
    Transform t = this.transform.parent;
    
    //获取根节点的变换组件
    Transform t = this.transform.root;
    
    //设置父节点  当前物体作为世界坐标点
    this.tansform.SetParent(tf,true);
    //设置父节点  当前物体作为本地坐标点
    this.tansform.SetParent(tf,false);
    
    //(名字)查找子节点
    Transform tf = this.transform.Find(子节点名称);
    Transform tf = this.transform.Find(子物体名称/孙代物体);//谨慎使用限制了物体的层级
    //根据索引查子物体
    int count = this.transform.child;
    for(int i = 0;i<count;i++){
        Transform tf = this.transform.GetChild(i);
    }
    
    查找一个节点下的 某一个名称的节点,通过上面的方法+递归思想 即可找到相应的节点
    
    Transform FindChildByName(Transform tf, string name){
        int count = tf.child;
        for(int i = 0;i<count;i++){
            Transform itemTf= this.transform.GetChild(i);
             if(tf.name == name)
              {
                  return itemTf;
              }
              else
              {
                  this.FindChildByName(itemTf,name);
              }
        }
         return null;
    }
    
    transform.Translate(0,0,1);//沿自身的z轴正方向移动一米
    transform.Translate(0,0,1,Space.World);//沿世界坐标系的Z轴正方向移动一米
    
    //注视旋转
    LookAt()
    
    //和Translate 同理
    transform.Rotate(0,0,1);
    transform.Rotate(0,0,1,Space.World);
    //围绕 某个点   什么轴 旋转多少度 
    transform.RotateAround(Vector3.zero,Vector.forward,1);
    

    GameObject 类:

    //(物体在场景中是否被激活)
    this.gameObject.activeInHierarchy  
    //物体本身是否被激活
    this.gameObject.activeSelf
    (eg: 物体的父节点设置active为false  此时的activeInHierarchy  为false  activeSelf 为true)
    
    //设置物体是否是激活
    gameObject.SetActive(true);
    
    layer 层
    tag 标签
    
    //在场景中根据名称查找物体(慎用 影响性能)
    GameObject o = GameObject.Find("游戏物体名称");
    
    //通过标签获取物体
    GameObject[] objs = GameObject.FindGameObjectsWithTag("Player");
    GameObject obj = GameObject.FindWithTag("Player");
    
    

    object 类:

    name 物体名称
    Destroy(obj);//删除对象 组件 资源
    Destroy(obj,3);//延迟3秒销毁
    DontDestroyOnLoad(); 加载新场景的时候 目标不会被自动销毁
    Object.FindObjectOfType<MeshRanderer>();//查找一个MeshRanderer
    Object.FindObjectsOfType<MeshRanderer>();//查找所有MeshRanderer
    Instantiate 拷贝一个预制体 返回拷贝后的预制体

    相关文章

      网友评论

          本文标题:Unity 中各种物体的继承关系

          本文链接:https://www.haomeiwen.com/subject/hjtgoltx.html