Unity Instantiate的用法

之前总结Unity实例化物体的文章:Unity 实例化物体以及赋予到父物体之下-CSDN博客

现在回头看来,感觉总结得不够全面,尤其关于Instantiate的用法,过于简陋了。

关于Instantiate,它实际上有10个语法:

  • Object Object.Instantiate(Object original);
  • Object Object.Instantiate(Object original,Transform parent);
  • Object Object.Instantiate(Object original,Transform parent,bool instantiateInWorldSpace);
  • Object Object.Instantiate(Object original,Vector3 position,Quaternion rotation);
  • Object Object.Instantiate(Object original,Vector3 position,Quaternion rotation,Transform parent);

上面5个语法中,其中,original参数是要实例化的对象,

parent参数是实例化对象的父级Transform,

instantiateInWorldSpace参数是指是否在世界空间中实例化,

position参数是指实例化对象的位置,

rotation参数是指实例化对象的旋转。

以上5个方法实例化对象的返回值就是实例化的对象的副本。就是相当于复制了一个对象。

特别说明:

  1. Instantiate(Object original)方法,它会在世界原点创建一个与原始对象相同的副本。
  2. Instantiate(Object original,Transform parent)方法,它会在指定的父物体(参数parent)下创建一个与原始对象相同的副本。
  3. Instantiate(Object original,Transform parent,bool instantiateInWorldSpace)方法,在指定父物体的同时,它还要我们选择是在世界空间还是本地空间中实例化物体。当instantiateInWorldSpace为true时,实例化对象将以世界空间的坐标进行放置。这就意味着无论父级对象的位置和旋转如何,实例化对象都将保持在相同的位置和旋转。而instantiateInWorldSpace为false时,实例化对象将以相对于父级对象的本地空间坐标进行放置。这就意味着,实例化对象的位置和旋转将相对于父级对象的位置和旋转进行偏移。
  4. Instantiate(Object original,Transform parent,bool instantiateInWorldSpace)方法是我们实例化对象的同时指定位置和旋转角度。
  5. Instantiate(Object original,Vector3 position,Quaternion rotation,Transform parent)方法是我们实例化对象的同时指定位置、旋转角度和父物体。

除了上面5个语法,还有下面五个语法:

  • T Object.Instantiate(T original);
  • T Object.Instantiate( T original,Transform parent);
  • T Object.Instantiate(T original,Transform parent,bool instantiateInWorldSpace);
  • T Object.Instantiate(T original,Vector3 position,Quaternion rotation);
  • T Object.Instantiate(T original,Vector3 position,Quaternion rotation,Transform parent);

有了对上面五个语法的理解,再来看这5个语法就很好理解了,其中,

parent参数、instantiateInWorldSpace参数、position参数、rotation参数跟上面5个语法对应参数是一样的。

唯一不同的是实例化对象和返回对象不同。它使用了个泛型对象T original,而返回值自然就是泛型的实例化对象的副本。

可以说后面5个语法是上面5个语法的拓展,它使我们示例化的对象不止是Object类,我们还可以实例化其它一些对象。

有了上面10个实例化对象的方法,我们要实例化对象是可以很灵活的。

你可能感兴趣的:(unity,游戏引擎,c#)