美文网首页Unity3d
Unity基础(7)-GameObject类

Unity基础(7)-GameObject类

作者: 元宇宙协会 | 来源:发表于2018-01-27 23:51 被阅读118次

    01-Unity下的GameObject类

    引擎下的GameObject菜单
    引擎下的GameObject菜单

    02-Unity下的GameObjcet类属性

    Name
    对象名,可以重复,无限数量
    Tag
    对象的标签,在Tags&Layer面板中设置
    当物体可能是空物体时,(游戏开发中,常用空物体去保存一些位置信息,空物体没有渲染,这时给物体添加一个图标,便于寻找与查看)
    Layer
    标记对象渲染组名字,常用于射线碰撞,摄像机裁剪,最多只能有32组
    activeInHierarchy 
    判断对象在层级视图是否隐藏,隐藏为false,反之True
    acticveSelf 
    只读属性,得到当前对象的状态(隐藏/启用)
    isStatic
    是否静态对象(静态对象表明只有一个)
    transform
    对象的位置,旋转,大小信息
    scene
    场景,获得当前对象的场景相关的信息
    
    

    03-Unity下的GameObjcet类属性使用

           // 打印当前游戏对象的名字
            print(Cube.name);
            // 表示当前游戏对象是否隐藏
            print(Cube.activeInHierarchy);
            // 表示当前游戏对象的状态
            print(Cube.activeSelf);
            // 设置对象不隐藏
            Cube.active = false;
            // 设置当前游戏对象为静态对象
           Cube.isStatic = true;
            // 打印游戏对象所在的层
            print(Cube.layer);
            // 获取层的索引
            print(Convert.ToInt32(Layer.water));
    
            //打印Tag值 
            print(Cube.tag);
            // 获得当前场景
            Scene s = Cube.scene;
            // 打印当前场景的名字
            print(s.name);
            // 设置游戏对象是否需要特殊设置
            print(Cube.hideFlags);
            //// 设置当前游戏对象不保存该对象移动后的信息
            Cube.hideFlags = HideFlags.DontSave;
         
         
    

    04-Unity下的GameObjcet类方法

    官方文档
    SetActive              调用此方法,传入bool参数(true/false)可以使当前物体显示或者隐藏
    AddComponent         为游戏对象添加组件,脚本                   
    CompareTag             调用此方法,传入字符串参数(“TagName”)当前游戏对象的tag值是否为参数TagName,名字一样返回True,反之False。           
    
    GetComponent       获取游戏对象的组件,脚本               
    GetComponentInChildren   返回此游戏对象或者它的所有子对象上(深度优先)的类型为type的组件。
    GetComponentInParent          从父对象查找组件。
    
    GetComponents               返回该游戏对象所有type类型的组件列表。      
    GetComponentsInChildren *返回此游戏对象与其子对象所有type类型的组件。*
    GetComponentsInParent   返回此游戏对象与其父对象所有type类型的组件。
    
    BroadcastMessage            对此游戏对象及其子对象的所有MonoBehaviour中调用名称为methodName的方法。
    SendMessage                    在这个游戏物体上的所有MonoBehaviour上调用名称为methodName的方法。
    SendMessageUpwards     在这个游戏物体及其祖先物体的所有MonoBehaviour中调用名称为methodName的方法。
    
    静态方法
    静态方法

    05-Unity下的GameObjcet类中的方法使用

    • 静态方法
            // 创建游戏对象
            GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
           // 动态创建实例化游戏对象(针对预制物,资源包内模型等)
            GameObject sp = GameObject.Instantiate(Sp, Vector3.zero, new Quaternion(0,0,0,1));
            // 设置游戏对象的位置,不设置默认是原点位置
            //cube.transform.position = new Vector3(0, 1, 1); 
            // 根据名字查找游戏对象
            GameObject sp =  GameObject.Find("Sphere");
            sp.transform.position = new Vector3(0, 0, 0);
             // 通过Tag,找到Tag值为“Player”的物体
            GameObject obj = GameObject.FindGameObjectWithTag("Player");
            //Debug.Log(obj.name);
            // 通过Tag,找到Tag值为“Player”的所有物体
            GameObject[]  objs = GameObject.FindGameObjectsWithTag("Player");
            for (int i = 0; i < objs.Length; i++)
            /{
                Debug.Log(objs[i].name);
                if (objs[i].name == "CCCC")
                {
                    ccc  = objs[i];
                    ccc.transform.position = new Vector3(0, 0, 0);
                    ccc.tag = "Playwes";
                }
            }
            // 查找某种类型,返回Object对象
            // 注意:要查找具化的游戏对象
            System.Object o1 =  GameObject.FindObjectOfType(typeof(People));
            Debug.Log(o1);
            System.Object[] os = GameObject.FindObjectsOfType(typeof(GameObj));
            for (int i = 0; i < os.Length; i++)
            {
                Debug.Log(os[i].ToString());
            }
            // 删除游戏对象
            GameObject.Destroy(Cube,5);
            GameObject.DestroyObject(Cube, 5);
            // 不要在加载的时候删除后面的游戏对象
            DontDestroyOnLoad(Cube);
            GameObject.DestroyImmediate(Cube);
    
    • 公开方法
             // 设置隐藏对象
            //Cube.SetActive(true);
            // 判断当前对象的Tag是否为“Player”
            bool b = Cube.CompareTag("Player");
            // 给游戏对象添加组件
            Cube.AddComponent<BoxCollider>();
            // 给游戏对象添加一个People脚本
            Cube.AddComponent(typeof(People));
            // 获取游戏对象身上的People脚本
            Cube.GetComponent(typeof(People));
    
    

    相关文章

      网友评论

        本文标题:Unity基础(7)-GameObject类

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