我创建了一个名为Zombies
的数组,其中包含了场景中的所有游戏对象。我还创建了foreach循环来检查Zombies
是否附加了ZombieState.cs
。我正在阅读这本书,但它没有清楚地解释为什么我们需要zState==this
。
using UnityEngine;
public class ZombieState : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
GameObject[] Zombies = (GameObject[])GameObject.FindObjectsOfType(typeof(GameObject));
foreach (GameObject go in Zombies)
{
ZombieState zState = go.GetComponent<ZombieState>();
if (zState == null || zState == this)
{
continue;
}
}
}
}
2条答案
按热度按时间rkttyhzu1#
this
是一个C#语句,它只引用了“this”类。在您的示例中,如果您通读代码,您会要求Unity列出
ZombieState
的所有示例。您从其中调用此语句的类也是ZombieState
。因此,实质上代码要求ZombieState
的所有示例,当需要对所有示例执行某些操作时,foreach
语句,我们希望对所有其他示例执行此操作。vuktfyat2#
一般来说,
this
关键字指的是类的当前示例,通常用于区分同名的示例变量和局部变量。在您的示例中,this
指的是附加到当前GameObject
的ZombieState
组件,而zState
指的是在for-each
循环中迭代的ZombieState
组件。zState == this
是一个比较,用于检查当前GameObject
的ZombieState
组件(由this
关键字引用)是否与for-each
循环中正在迭代的ZombieState
组件相同。如果
zState == this
为true
,则意味着当前正在迭代的ZombieState
组件与当前GameObject
的ZombieState
组件相同。在这种情况下,代码将跳过for-each
循环的当前迭代,并继续下一个迭代。