首页 > 解决方案 > 嗨,我有一个代码可以在游戏对象不同步时更新它们,但是每次运行游戏时我都必须单击 GUI 按钮

问题描述

我有一个代码可以在游戏对象不同步时更新它们,但是每次运行游戏时我都必须单击 GUI 按钮。有没有办法让我在运行游戏时自动运行代码。这是更新道路的函数的代码:

 /// <summary> Updates all roads of this RoadSystem </summary>
    public void UpdateAllRoads()
    {
        Road[] allRoadObjs = GetComponentsInChildren<Road>();
        int roadCount = allRoadObjs.Length;
        SplineC[] piggys = null;
        if (roadCount > 1)
        {
            piggys = new SplineC[roadCount];
            for (int i = 0; i < roadCount; i++)
            {
                piggys[i] = allRoadObjs[i].spline;
            }
        }

        Road road = allRoadObjs[0];
        if (piggys != null && piggys.Length > 0)
        {
            road.PiggyBacks = piggys;
        }
        road.UpdateRoad();
    }
   

这是执行代码的按钮的代码:

//Update all roads button:
        if (GUILayout.Button("Update all roads", EditorStyles.miniButton, GUILayout.Width(120f)))
        {
            roadSystem.UpdateAllRoads();
        }

标签: c#unity3d

解决方案


是的,有办法。

Unity 有一个生命周期系统,其中有一些函数/方法将在设定的时间被调用,例如Update()将在游戏的每一帧调用,直到游戏对象被销毁或被禁用。OnDisable()当对象被禁用时将被调用。

为了UpdateAllRoads()在游戏开始时调用你的函数,调用 fromAwake()或 from Start()。这样,当您开始游戏时,每次都会调用此函数/方法。


推荐阅读