如果你想在所有代码执行完毕后再旋转生成的圆柱体,你可以使用'Coroutine'来实现延迟旋转。

首先,在'GenerateCylinders'函数中,生成圆柱体的克隆,并将它们存储在一个列表中:

List<GameObject> cylinders = new List<GameObject>();

void GenerateCylinders()
{
    if (prefab != null)
    {
        for (int i = 0; i < cloneCount; i++)
        {
            // 在指定位置生成预制体,并设置旋转方向
            GameObject newObject = Instantiate(prefab, transform.position, Quaternion.identity);
            newObject.transform.SetParent(transform); // 设置生成的预制体为当前物体的子物体

            // 设置圆柱体的缩放和位置
            newObject.transform.localScale = new Vector3(radius * 2, height, radius * 2);
            newObject.transform.localPosition = new Vector3(0f, i * height, 0f);

            cylinders.Add(newObject);
        }
    }
}

然后,在适当的时机调用一个协程来延迟旋转圆柱体。例如,在'Start'函数中调用协程:

void Start()
{
    GenerateCylinders();
    StartCoroutine(RotateCylinders());
}

在协程'RotateCylinders'中,你可以使用'yield return new WaitForSeconds'来延迟旋转操作。例如,延迟1秒后旋转所有圆柱体:

IEnumerator RotateCylinders()
{
    yield return new WaitForSeconds(1f);

    foreach (GameObject cylinder in cylinders)
    {
        cylinder.transform.Rotate(Vector3.up, 90f);
    }
}

在上述代码中,我们使用'yield return new WaitForSeconds(1f)'来延迟1秒。然后,使用'foreach'循环遍历存储在'cylinders'列表中的圆柱体,对每个圆柱体进行旋转操作。

这样,生成的圆柱体将在所有代码执行完毕后延迟1秒进行旋转。你可以根据需要调整延迟的时间和旋转的角度。

Unity: 延迟旋转生成的圆柱体

原文地址: https://www.cveoy.top/t/topic/vy4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录