我的统一 IEnumerator 方法似乎不起作用

My unity IEnumerator method not seems to be work

我有一些代码: 为什么 IEnumerator 方法中的 Debug.Log 不显示任何内容? 为什么我的方法不起作用?

void Update()
    {
        if (Input.GetKeyDown(KeyCode.G))
        {
            Debug.Log(true);
            MoveInsideTheShape(speedy);
        }
    }

    public IEnumerator MoveInsideTheShape(float speed)
    {
        speed = 1 / speed;
        float totalLenght = cam.orthographicSize * 2;
        float iterationLenght = totalLenght / speed;

        Debug.Log(cam.orthographicSize); // does not work
}

即使您在 MoveInsideTheShape 方法中缺少 return 语句,添加它仍然无法解决您的问题。

IEnumerator 方法必须使用 StartCoroutine 辅助方法进行迭代。

这是经过测试的工作代码。

void Update()
{
    if (Input.GetKeyDown(KeyCode.G))
    {
        Debug.Log(true);
        StartCoroutine(MoveInsideTheShape(speedy));
    }
}

public IEnumerator MoveInsideTheShape(float speed)
{
    speed = 1 / speed;
    float totalLenght = cam.orthographicSize * 2;
    float iterationLenght = totalLenght / speed;

    Debug.Log(cam.orthographicSize);

    yield return null;
}

有用的链接: