一、官方文档
二、实验
代码示例
void Update()
{
if (Input.GetKeyDown(KeyCode.Q)) {
GameObject sphere= GameObject.Instantiate(Resources.Load<GameObject>("Sphere"));
sphere.transform.SetParent(cube,true);
}
if (Input.GetKeyDown(KeyCode.W)) {
GameObject sphere = GameObject.Instantiate(Resources.Load<GameObject>("Sphere"));
sphere.transform.SetParent(cube, false);
}
}
1、初始游戏物体的Transform
Sphere预制体,在世界坐标下创建的prefab
原点的Cube
2、操作
按下W
之后按下Q
将子物体从父物体内拖出,即取消父子关系,Transform显示的都是世界坐标
worldPositionStays为true
worldPositionStays为false
三、总结
参数worldPositionStays,翻译为保持世界坐标,即成为子物体后是否维持原世界坐标下的transform;按下Q,worldPositionStays标志位为true,相当于直接在editor模式下将sphere预制体直接拖入世界坐标;按下W,worldPositionStays为false,相当于在editor模式下将sphere拖入原点的Cube内。
在动态生成一些物体的时候,注意其制作预制体的时候所在的空间,有时物体在制作预制体时就是在父物体内,所以坐标为局部坐标,如UI中的子项,创建时应将标志位设置为false。
四、更多
版权声明:本文为ZuoXuanZuo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。