比較標籤
通過標記比較兩個 GameObject 時,應該注意以下內容會導致垃圾收集器開銷,因為每次都會建立一個字串:
if (go.Tag == "myTag")
{
//Stuff
}
在 Update()
和其他常規 Unity 的回撥(或迴圈)中執行這些比較時,你應該使用此無堆分配方法:
if (go.CompareTag("myTag")
{
//Stuff
}
此外,將標記儲存在靜態類中更容易。
public static class Tags
{
public const string Player = "Player";
public const string MyCustomTag = "MyCustomTag";
}
然後你可以安全地比較
if (go.CompareTag(Tags.MyCustomTag)
{
//Stuff
}
這樣,你的標記字串就會在編譯時生成,並且你可以限制拼寫錯誤的含義。
就像將標記儲存到靜態類中一樣,也可以將它儲存到列舉中:
public enum Tags
{
Player, Ennemies, MyCustomTag;
}
然後你可以使用 enum toString()
方法比較它:
if (go.CompareTag(Tags.MyCustomTag.toString())
{
//Stuff
}