Unity3d

Unity基础(7)-GameObject类

2018-01-27  本文已影响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));

上一篇下一篇

猜你喜欢

热点阅读