预制体变换注意_WorldPositionStays|解决生成物体大小比例不一
首先一个预制体 保存的是当前对象的信息。当生成这个预制体的时候,注意WorldIsStay的赋值。
WorldisStay:是否经过世界转换。为True的时候,会把这个预制件,先放到世界坐标下,在放到当前物体下。也就是说你当时保存的预制件的Transform信息的局部信息,会先以世界为局部坐标系,然后在放到设置的物体下,因为画布是有缩放的,坐标系肯定与世界坐标系不一样,这样肯定不行,会出现比例位置旋转不一致的问题。
如图,我需要把一个需要遮罩的内容,放到所有遮罩物的下面,我想要保持内容的位置不变。那么我就要保证不偏移,而且要变换。我不可能以遮罩物为局部中心坐标系,我需要以在编辑器下设置预制体时候,预制体那个父物体为局部坐标系。这样才能保证我的wroldPosition是对的。然而不能直接通过一句Instantiate代码做到这件事情。因为worldStay为true的时候他会先以世界为坐标系。为false时候 他会以你设置的父物体为局部坐标系。True 和false都不能满足我的要求。因为我的Position最后都会变化。
所以我要先保证我的预制体不先以世界为坐标系,然后再从其他地方入手。
于是想到图中操作,先生成到原来的父物体下面,这样我的位置就可以先保证是正确的。
然后在放到我的遮罩物下面,这时候设置物体的时候,就要经过变换了。
什么是变换?
就是说你要不要按照另一个物体的局部信息改变你的局部信息。
如果不变换,就意为你想要在变化父物体的同时保持之前的局部信息,无论要设置的父物体跟之前的父物体Transform信息不一致。
都知道在编辑模式下拖拽层级都会经过变换。不经过变换的只有一种情况从project中拖出预制体。所以说要想保证位置正确,一定要先保证代码设置的父物体要跟预制体原先的父物体一致,且不经过世界变换才行。
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/unity/1768/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!