首页 > 解决方案 > 如何加快统一项目的运行?

问题描述

您好,我正在使用自动驾驶仪进行飞行模拟,所以我在统一中创建了模拟,并在 python 中创建了自动驾驶仪,但是现在如果我想训练模型,我需要在一次迭代中等待 50 小时的训练过程,所有这些都是由于统一渲染场景(“飞机从(500,500,500)到(700,500,350)所需的实际时间,所以我需要加快游戏速度。

我尝试只运行代码,但我不知道该怎么做,以及它是否会因为固定更新而工作。

我只想知道一种加快统一场景的方法。

标签: c#pythonunity3d

解决方案


您可以使用不同Time.timeScale的脚本:

Time.timeScale = 10;

使您的游戏运行速度比实时快 10 倍。

如果降低timeScale,建议也降低Time.fixedDeltaTime相同的量。

所以从示例中只需在第一行之后添加

Time.fixedDeltaTime = 0.02f * Time.timeScale;

我会简单地在像这样的组件中做到这一点

public class TimeScaler : MonoBehaviour
{
    // adjust in Inspector
    public float initialTimeScale = 1.0f;

    private void Start()
    {
        SetTimeScale(initialTimeScale);
    }

    // Can now also be called rom other scripts
    public void SetTimeScale(float scale)
    {
        Time.timeScale = scale;
        Time.fixedDeltaTime = 0.02f * Time.timeScale;
    }
}

这样,您可以简单地通过 Inspector 调整比例,或者如果您想在某些时刻来回更改 timeScale,也可以稍后从其他脚本中重新使用该组件。


推荐阅读