Dav*_*ave 3 c# unity-game-engine
我知道可以通过这种方式禁用 Unity 中的警告消息:
#pragma warning disable 0168 // variable declared but not used.
Run Code Online (Sandbox Code Playgroud)
但有一个警告,其中没有我需要隐藏的 ID 号。有没有办法在不知道 id 的情况下禁用它,或者我可以在某个地方找到它吗?
警告消息是:BoxColliders 不支持负比例或大小。有效盒子尺寸已被强制为正值,并且可能会产生意外的碰撞几何形状。
编辑: 我收到警告的原因是:我有带有多个碰撞器的对象(一些网格,一些盒子以获得更好的性能)。碰撞器嵌套在子对象中。我在父对象上使用 -1 比例来获取其镜像。对于网格碰撞器来说是可以的,对于盒子来说则不行(将 Unity 升级到新版本后会显示此警告)。它不会破坏游戏,但很烦人,并且此警告会显示在设备上。我只是想隐藏警告,因为它对我的情况下的碰撞几何体没有影响。
当我给父对象负比例时,其带有对撞机的子对象相对于父对象保持正比例,但仍然显示警告。
如果我无法禁用设备上的警告,我将不得不修复它,但是将碰撞器更改为网格碰撞器是一种矫枉过正,我能想到的在代码中修复它的唯一方法是更改子比例(使用碰撞器) )到根的对面,但我不确定这是否有效。
编辑2: 对于遇到此问题的任何人,我通过根据世界比例使用盒碰撞器缩放所有子对象来修复警告:
transform.localScale = new Vector3(transform.localScale.x * Mathf.Sign(transform.lossyScale.x),
transform.localScale.y * Mathf.Sign(transform.lossyScale.y),
transform.localScale.z * Mathf.Sign(transform.lossyScale.z));
Run Code Online (Sandbox Code Playgroud)
无论如何,Unity 都会强制比例为正,因此最终结果是相同的。这就是为什么我只想禁用警告。
#pragma warning disable XY
Run Code Online (Sandbox Code Playgroud)
只能用于禁用编译时警告。
您得到的是相应组件抛出的运行时(可能在编辑器脚本中但仍然是运行时)警告。
您可以使用控制台工具栏中的警告开关禁用(或更好地隐藏)控制台中的所有警告。
我猜测,但似乎您正在将大小设置为某个Vector3
字段,例如
public Vector3 colliderSize;
Run Code Online (Sandbox Code Playgroud)
通过检查器,然后在玩应用程序并应用该尺寸时获得温暖。
如果你想限制这个至少是0
你可以这样做OnValidate
当加载脚本或在检查器中更改值时调用此函数(仅在编辑器中调用)。
为了确保在玩游戏或构建游戏之前纠正该值
private void OnValidate()
{
colliderSize = new Vector3(Mathf.Max(0, colliderSize.x), Mathf.Max(0, colliderSize.y), Mathf.Max(0, colliderSize.z));
}
Run Code Online (Sandbox Code Playgroud)
或使用例如反转它
private void OnValidate()
{
colliderSize = new Vector3(Mathf.Abs(colliderSize.x), Mathf.Abs(colliderSize.y), Mathf.Abs(colliderSize.z));
}
Run Code Online (Sandbox Code Playgroud)
然而,总的来说:这是一个警告 - 不是例外 - 可以注意到但可以忽略。
它表明您的代码设置该大小可能有其他问题。但它不会破坏你的游戏。Unity 只是善意地通知您,您尝试在某处使用负值,然后再将其固定0
或反转。
归档时间: |
|
查看次数: |
6464 次 |
最近记录: |