为什么 Debug.Assert 即使长度一直为 1 也会显示错误消息?
Why the Debug.Assert show the error message even if the Length is 1 all the time?
private GameObject GetDoorShaderPrefab()
{
string[] shieldPrefab = AssetDatabase.FindAssets(c_doorShieldFxLocked);
Debug.Assert(shieldPrefab.Length != 1, "Expected exactly 1 shield like this...");
string shieldGuid = shieldPrefab[0];
string prefabPath = AssetDatabase.GUIDToAssetPath(shieldGuid);
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath);
Debug.Assert(prefab != null, "Expected prefab to load");
return prefab;
}
我在一行中使用了一个断点:
Debug.Assert(shieldPrefab.Length != 1, "Expected exactly 1 shield like this...");
shieldPrefab的Length一直是1,但还是显示错误信息"Expected exactly 1 shield like this..."
在脚本的其他地方多次调用 GetDoorShaderPrefab 方法。但是每次长度为1时,它一直显示错误信息。
我觉得你的情况应该是== 1
所以:
Debug.Assert(shieldPrefab.Length == 1, "Expected exactly 1 shield like this...");
条件为false
时显示该消息。来自 docs:
Assert(Boolean, String)
Checks for a condition; if the condition is false
, outputs a specified message and displays a message box that shows the call stack.
想法是断言检查一些条件,它只会抱怨你的断言是错误的。
为了方便记忆,条件和文字应该告诉你相同的,而不是相反的。
根据 documentation Debug.Assert 显示消息如果条件为 false...
因此,当您说 "shieldPrefab.Length != 1" 时,这始终是错误的,因为长度始终为 1。
如果你想检查长度是否不是 1你需要应用相反的:
Debug.Assert(shieldPrefab.Length == 1, "Expected exactly 1 shield like this...");
private GameObject GetDoorShaderPrefab()
{
string[] shieldPrefab = AssetDatabase.FindAssets(c_doorShieldFxLocked);
Debug.Assert(shieldPrefab.Length != 1, "Expected exactly 1 shield like this...");
string shieldGuid = shieldPrefab[0];
string prefabPath = AssetDatabase.GUIDToAssetPath(shieldGuid);
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath);
Debug.Assert(prefab != null, "Expected prefab to load");
return prefab;
}
我在一行中使用了一个断点:
Debug.Assert(shieldPrefab.Length != 1, "Expected exactly 1 shield like this...");
shieldPrefab的Length一直是1,但还是显示错误信息"Expected exactly 1 shield like this..."
在脚本的其他地方多次调用 GetDoorShaderPrefab 方法。但是每次长度为1时,它一直显示错误信息。
我觉得你的情况应该是== 1
所以:
Debug.Assert(shieldPrefab.Length == 1, "Expected exactly 1 shield like this...");
条件为false
时显示该消息。来自 docs:
Assert(Boolean, String)
Checks for a condition; if the condition is
false
, outputs a specified message and displays a message box that shows the call stack.
想法是断言检查一些条件,它只会抱怨你的断言是错误的。
为了方便记忆,条件和文字应该告诉你相同的,而不是相反的。
根据 documentation Debug.Assert 显示消息如果条件为 false...
因此,当您说 "shieldPrefab.Length != 1" 时,这始终是错误的,因为长度始终为 1。
如果你想检查长度是否不是 1你需要应用相反的:
Debug.Assert(shieldPrefab.Length == 1, "Expected exactly 1 shield like this...");