我们项目里也遇到过。 UI的prefab 加载后onEnable里 设置上面canvas的 overrideSorting 没有效果。 原来prefab 加载后已经触发onEnable了, 但此时还没挂载到UI的Canvas下面。
https://www.cnblogs.com/pmsl/p/8885640.html
以下转发
问题描述
GameObject obj = new GameObject("Object");
var c = obj.AddComponent<Canvas>();
c.overrideSorting = true;
c.sortingOrder = order;
obj.transform.SetParent(parent);
代码逻辑
这段代码是想,给生成的一个GameObject挂一个 Canvas ,并且设置它的层级
结果发现这段代码并没有达到预想的目的。
原因
新生成的 GameObject 默认是在世界节点下的,这时Canvas的 overrideSorting 属性时不容许修改的。因此 overrideSorting = true,等于没有设置。可想而知达不到预期的效果也是正常的