小编Rog*_*ang的帖子

在 Unity 中,我什么时候应该使用协程而不是在 Update() 中减去 Time.deltaTime?

下面是我想强调的差异的一个简单示例。

使用协程:

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)

我什么时候应该使用一个而不是另一个,每个的优点/缺点是什么?

c# time ienumerator coroutine unity-game-engine

8
推荐指数
2
解决办法
2411
查看次数

为什么 Unity 在某些函数(例如 GetChild())中使用 Transform 而不是 GameObject?

Unity 使用transform.GetChild(childNum)gameObject.GetChild(childNum).

我知道 Unity 中的每个 GameObject 都有一个 Transform 组件,并且该函数返回子项的 Transform,但是使用 GameObject 类获取子项不是更合逻辑吗,因为它引用场景或项目中的实际 GameObject而不仅仅是一个组件?为什么使用 Transform 来查找分层信息?

c# transform parent-child unity-game-engine gameobject

5
推荐指数
1
解决办法
1208
查看次数

为什么 NavMeshAgent.remainingDistance 返回 Infinity 值,然后在 Unity 中返回浮点数以表示无法到达的目的地?

SetDestination()当我为 NavMeshAgent 和Debug.Log()每一帧设置无法到达的目标位置时NavMeshAgent.remainingDistance,我会获取Infinity一些路径,直到它开始返回浮点数(21.21864、21.0846、20.95449...),直到它尽可能接近目的地,这返回 0。

agent path-finding infinity unity-game-engine navmesh

2
推荐指数
1
解决办法
8823
查看次数