一、Camera设置渲染层级问题
如果想动态设置Camera的渲染层级,在网上搜索大概都有这样几个示例:
camera.cullingMask = 1 << x; // 渲染x层
camera.cullingMask = ~(1 << x); // 渲染除去层x的所有层
camera.cullingMask &= ~(1 << x); // 关闭层x
camera.cullingMask |= (1 << x); // 打开层x
camera.cullingMask = 1 << x + 1 << y + 1 << z; // 摄像机只显示第x层,y层,z层.(最开始以为运算顺序是1 <<( x + 1 )<<(y + 1) << z)
但是最后一个这样设置,如果想渲染多个层级真的是这样的吗?我Unity5.6代码这样写之后没有得到我想要的结果。然后看了一下cullingMask 设置参数的原理,是用的位运算来确定哪些层级被选中,记得大学老师讲C++的时候讲过这种方法。想了一下,觉得参数应该这样设置:
camera.cullingMask = (1 << x )+ (1<< y )+ (1 << z); // 摄像机只显示第x层,y层,z层.
试了一下,是我想要的效果。
---------2019.03.21更新(Start)------
摄像机显示多个层级:
camera.cullingMask = (1 << LayerMask.NameToLayer("UI")) | (1 << LayerMask.NameToLayer("effect"));
camera.cullingMask = (1 << LayerMask.NameToLayer("UI")) + (1 << LayerMask.NameToLayer("effect"));
可以使用LayerMask.GetMask:
camera.cullingMask = LayerMask.GetMask("UI", "effect");
---------2019.03.21更新(End)------
二、Transform.SetParent第二个参数的坑
可能是当时学习Unity的时候没有仔细,后来才发现这样的问题:Unity中Transform.SetParent第二个参数的使用。
三、Unity编辑器下某些方法执行结果与预期不同
发现这个问题是想学习一下编辑器的东西:Unity编辑器下某些方法执行结果与预期不同
四、C#中Split的使用