很多时候需要使用按钮、手势等操作交互,生成游戏物体,一般使用 Instantiate 函数,用prefab预制体生成物体
一个简单的例子,事先在Inspector界面中绑定好预制体
public Class PlayerManager : MonoBehaviour
{
public GameObject Player;
public Transform pos;//位置
void CreatePlayer()
{
instantiate(Player, pos, Quartenion.identity);
}
}
看一下与 instantiate 所有的相关函数
与 instantiate 相关的函数
Object.Instantiate | Unity Official
public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Transform parent);
public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);
带有 parent
参数的函数,表示生成的游戏对象都会挂载到指定的父物体上;无 parent
参数的函数,则无父物体
instantiateInWorldSpace
,如果为 false
表示其位置是相对于父物体,true
则以世界坐标显示(这里的坐标指预制体的坐标)
rotation
表示其旋转参数,一般如果不需要修改,则传入 Quaternion.identity
表示一个单位矩阵,不旋转
总结
总的来说,如果需要挂载在某个物体下,之后需要随着物体移动,那么使用带 parent
参数的函数
如果需要旋转,选择有 rotation
的函数
instantiateInWorldSpace
决定预制体的相对原点是父物体还是世界坐标原点,即Vector3.zero