下面是我想强调的差异的一个简单示例。
使用协程:
public float repeatRate = 5f;
void Start()
{
StartCoroutine("RepeatSomething");
}
IEnumerator RepeatSomething()
{
while (true)
{
yield return new WaitForSeconds(repeatRate);
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
使用Update()
和Time.deltaTime
:
public float repeatRate = 5f;
private float timer = 0;
void Update()
{
if (timer < 0)
{
// Do something
timer = repeatRate;
}
timer -= Time.deltaTime;
}
Run Code Online (Sandbox Code Playgroud)
我什么时候应该使用一个而不是另一个,每个的优点/缺点是什么?
Unity 使用transform.GetChild(childNum)
与gameObject.GetChild(childNum)
.
我知道 Unity 中的每个 GameObject 都有一个 Transform 组件,并且该函数返回子项的 Transform,但是使用 GameObject 类获取子项不是更合逻辑吗,因为它引用场景或项目中的实际 GameObject而不仅仅是一个组件?为什么使用 Transform 来查找分层信息?
SetDestination()
当我为 NavMeshAgent 和Debug.Log()
每一帧设置无法到达的目标位置时NavMeshAgent.remainingDistance
,我会获取Infinity
一些路径,直到它开始返回浮点数(21.21864、21.0846、20.95449...),直到它尽可能接近目的地,这返回 0。
c# ×2
agent ×1
coroutine ×1
gameobject ×1
ienumerator ×1
infinity ×1
navmesh ×1
parent-child ×1
path-finding ×1
time ×1
transform ×1