c# - 嗨,我有一个代码可以在游戏对象不同步时更新它们,但是每次运行游戏时我都必须单击 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();
}
解决方案
是的,有办法。
Unity 有一个生命周期系统,其中有一些函数/方法将在设定的时间被调用,例如Update()
将在游戏的每一帧调用,直到游戏对象被销毁或被禁用。OnDisable()
当对象被禁用时将被调用。
为了UpdateAllRoads()
在游戏开始时调用你的函数,调用 fromAwake()
或 from Start()
。这样,当您开始游戏时,每次都会调用此函数/方法。
推荐阅读
- android - Android Parcelable - 如何在另一个自定义对象数组中传递自定义对象数组
- r - plotly,无法更改 R 中的单个条形颜色
- angular - 以模态角度显示数据
- php - Woocommerce 过滤器产品使用颜色和类别?
- java - 如何使用 Spring Boot 在控制器中注入 bean?
- r - R ggplot2 geom_smooth - 单调平滑函数
- ios - MKCoordinateRegionMakeWithDistance 的反函数?
- java - 在使用 StringBuilder 将值写入 excel 时在特定列附加值
- botframework - 找不到区域设置“en”的 LUIS 模型
- javascript - Javascript/JQuery - 带有对 HTML 实体的变音符号的大 ANSI 字符