动态 实例化物体,添加/移除组件,修改子物体顺序

最近常用到一些基础的知识,在这里做一下总结,大大们请无视啦~

1_代码创建物体

        //创建空物体
        GameObject newGo = new GameObject("NewObj");
        //设置父物体
        newGo.transform.parent = transform;
        //创建Unity内置预设(Capsule/Cube/Cylinder/Plane/Quad/Sphere),不常用到
        GameObject newPrimitive = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        //克隆原始物体并返回克隆物体
        //会将Object实例化到场景中,可以是GameObject,也可以是Component(会实例化挂载Component的物体),脚本也属于Component哦
        //Instantiate有多个重载,可以设置实例化对象的属性
        GameObject newObj = Instantiate(newGo, transform);

2_代码添加/获取/移除组件
之前知道只有添加组件,而没有移除组件的方法,后来才发现Destroy就可以实现移除,亲测有效~

      //GameObject添加组件
        newObj.AddComponent<BoxCollider>();
        //移除组件,Destroy常用来销毁游戏对象,其实也可以用来销毁某个组件
        newGo.AddComponent<BoxCollider>();
        Destroy(newGo.GetComponent<BoxCollider>());    
        //获取组件
        BoxCollider collider = newObj.GetComponent<BoxCollider>();

3_代码修改子物体的顺序

        //修改子物体顺序
        GameObject newChild = new GameObject("newChild");
        newChild.transform.SetAsFirstSibling();
        newChild.transform.SetAsLastSibling();
        newChild.transform.SetSiblingIndex(0);

4_动态创建单例

    //单例,脚本不需要事先挂载到场景,在游戏运行过程中,第一次用到该单例的时候,自动实例化到场景
    static Script instance;
    public static Script Instance
 {
        get
        {
            if(instance == null)
            {
                instance = new GameObject("ScriptObj").AddComponent<Script >();
 }
            return instance;
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_39108767/article/details/82228292
今日推荐