发现这个问题,纯属巧合,之前的项目中老是有一个问题,就是动态加载UI预制后,还要手动修改UI的Transform,一直有一个疑问。后来无意中发现项目中为了取消勾选Raycast Target使用了这个方法(Unity3D研究院之UGUI一个优化效率小技巧),我也发现挺好的,并没有发现他们之间有什么联系。
最近又想理清楚Canvas的Render Mode三个模式,突然发现Screen Space - Overlay模式下创建Image没什么问题,但是Screen Space - Camera模式下创建的Image的Rect Transform 会发生变化。研究了一下,发现就是上述那个方法造成的,本来在那个方法后边掉用Inspector的Reset方法把Rect Transform 手动更改一下,无耐技术有限,不知道怎么调用。后来又发现,只有SetParent可能会改变Rect Transform 。百度了一下,找到一篇文章(Unity3D之UI设置父子关系SetParent坑),别人已经写的很清楚了,我就复制一下官方文档第二个参数的解释吧!
worldPositionStays | If true, the parent-relative position, scale and rotation are modified such that the object keeps the same world space position, rotation and scale as before. |
---|---|
所以把那个取消勾选Raycast Target的方法改了一下。
1 | [ ] |