我有一个SceneController,它应该初始化一组空的GameObject产生器,每个产生器以相同的节奏一起工作。 RockSpawners收到一系列时间延迟,并在产生另一块岩石之间等待X秒。
我在产生者开始时设置using System;
using System.ComponentModel;
[TypeDescriptionProvider(typeof(MyTypeDescriptionProvider))]
public class SampleClass
{
[RefreshProperties(RefreshProperties.All)]
public bool Editable { get; set; }
string sp;
public string StringProperty
{
get { return sp; }
set
{
if (Editable)
sp = value;
}
}
}
并计划在"初始化"之后覆盖它。它们(我自己的方法),但即使我的调试日志说我在初始化时覆盖了我的_nextSpawn = float.maxValue
值,更新循环仍然报告_nextSpawn
并且没有任何结果产生,因为{{1没有超过float.maxValue
秒。
我的_timeSinceLastSpawn
变量的范围是否缺少某些内容?它似乎不是一个"这个" vs" local"问题,至少乍一看。
调试输出:float.maxValue
。 0' s保持不变,3将根据rng而变化。
SceneController.cs:
_nextSpawn
RockSpawner.cs
0 0 3 3
答案 0 :(得分:4)
这不是关于范围界定,而是关于呼叫顺序。当您创建GameObject
Start
method is called on the frame it's enabled时,而不是创建对象时。因此,您的代码将首先调用Initialize
,然后调用Start
覆盖值。
删除Start
中的代码并处理Initialize
中的所有内容,它应该可以正常工作。