这两个都是比较tag值的方法,使用.CompareTag()更快一点
使用GameObject.CompareTag比直接Gameobject.tag花费少
代码如下:
void FunCompareTag()
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
for (int y = 0; y < 10; y++)
{
if (gameObject.CompareTag("Cube"))
{
sum += y;
}
}
}
}
void FunEqualTag()
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
for (int y = 0; y < 10; y++)
{
if (gameObject.tag=="Cube")
{
sum += y;
}
}
}
}
写了两个函数来进行调用CompareTag和tag,然后在Start方法中分别进行性能比较
void Start ()
{
for (int i = 0; i < 100; i++)
{
float time1 = Time.realtimeSinceStartup;
FunCompareTag();
float time2 = Time.realtimeSinceStartup;
float res1 = time2 - time1;
float time3 = Time.realtimeSinceStartup;
FunEqualTag();
float time4 = Time.realtimeSinceStartup;
float res2 = time4 - time3;
Debug.Log(res1 < res2 ? "Compare" : "Equal");
}
}
res1和res2中结果越小,花费时间越少,性能越好 结果果然不负众望
CompareTag是GameObject中定义的一个方法可以直接进行比较 而.tag作为GameObject中的属性先要get,set一遍然后再通过字符串进行比较,所以多花了时间。
以后就不用.tag啦 要改习惯用CompareTag啦