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的长度始终为1,但仍显示错误消息“像这样精确地预期有1个屏蔽...”
GetDoorShaderPrefab方法在脚本的其他位置被多次调用。但是每次“长度”为1时,它都会一直显示错误消息。
答案 0 :(得分:3)
我认为您的情况应该为== 1
所以:
Debug.Assert(shieldPrefab.Length == 1, "Expected exactly 1 shield like this...");
当条件为false
时显示该消息。来自docs:
声明(布尔值,字符串)
检查条件;如果条件为
false
,则输出指定的消息并显示一个显示调用堆栈的消息框。
想法是断言检查某些条件,并且只会抱怨您的断言是错误的。
为了容易记住,条件和文字应该告诉您相同的内容,而不是相反的内容。
答案 1 :(得分:1)
根据documentation Debug.Assert显示条件为 false ....
的消息。因此,当您说“ shieldPrefab.Length!= 1”时,这始终是错误的,因为“长度”始终是1。
如果要检查长度是否不是 1,则需要应用相反的方法:
Debug.Assert(shieldPrefab.Length == 1, "Expected exactly 1 shield like this...");