启动/更新变量范围

时间:2018-01-20 21:19:55

标签: c# unity3d scope

我有一个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

1 个答案:

答案 0 :(得分:4)

这不是关于范围界定,而是关于呼叫顺序。当您创建GameObject Start method is called on the frame it's enabled时,而不是创建对象时。因此,您的代码将首先调用Initialize ,然后调用Start覆盖值。

删除Start中的代码并处理Initialize中的所有内容,它应该可以正常工作。