游戏中大多情况下我们都需要通过代码生成子弹、刷新小兵等,所以需要将预制体实例化到场景中
Game0bject.Instantiate() :有多个重载,根据情况选择
Game0bject.Instantiate<>() :有泛型的用于特殊情况,不是用来预制体
重载1:public static Object Instantiate(Object original);
GameObject.Instantiate(物体)
创造了一大堆预制体在同一个位置,原点(0,0,0),与挂载脚本物体位置无关。
重载2:public static Object Instantiate(Object original,Transform parent);
重载3:public static Object Instantiate(Object original,Transform parent, bool instantiateInWorldSpace);
重载4:public static Object Instantiate(Object original,Vector3 position,Quaternion rotation);
重载5:常用:
public static Object Instantiate(Object original,Vector3 position,Quaternion rotation,Transform parent);
GameObject.Instantiate(物体,位置,旋转值,父物体的Transfrom)
GameObject.Instantiate(Prefab,new Vector3(0,1,0),Quaternion.identity,transform);
参数中的 Quaternion.identity : Quaternion(翻译为:四元数)identity(翻译为:本体;相同)就是没有旋转值
Quaternion.identity
public static Quaternion identity;
Description:
The identity rotation (Read Only).
This quaternion corresponds to "no rotation" - the object is perfectly aligned with the world or parent axes.
该四元数对应于“无旋转”——对象与世界轴或父轴完全对齐。
参数中的 transform 直接写就是自己的Transform
实例化出的预制体Position就是new Vector3(0,1,0)
父物体就是transform,即挂载组件的GameObject