我正在尝试使用 Unity 4.2 制作 MMO 游戏,并且可以成功构建它,但是当我玩 Unity 时,我收到了几个警告,例如:
一个游戏对象只能在一层。层需要在范围内[0....31] UnityEngine.Gameobject: set_layer(int32)
有人可以帮我解决这些问题吗?
我正在尝试使用 Unity 4.2 制作 MMO 游戏,并且可以成功构建它,但是当我玩 Unity 时,我收到了几个警告,例如:
一个游戏对象只能在一层。层需要在范围内[0....31] UnityEngine.Gameobject: set_layer(int32)
有人可以帮我解决这些问题吗?
Unity 中的图层被定义为整数掩码。这实质上意味着它们是在引擎内部由一个设置了单个位的整数值定义的。
因此,如果您将图层的值设置为 0,则实际掩码整数值为1 << 0
. 或者,如果您将其设置为 2,则实际存储的整数掩码值为1 << 2
. 不难想象为什么你只能有 32 个不同的层。毕竟一个整数有 32 位。
所以检查你设置的图层,看看它们是否在范围内。
似乎 GameObjects 和 LayerMasks 工作方式不同,抛出的错误是错误的。对光线投射/图层蒙版使用位移技巧(1 << 13),对游戏对象(.layer)使用移位计数(13),我知道这没有意义,但两者都不同。我只是浪费了半个小时。