我有一个单独的时间脚本,我用它来显示我的场景中的时间。它包含小时,分钟和秒变量。我想做一些指定的工作,例如,在指定时间执行代码,目前我正在做这样的事情。在更新中。我正在运行一个函数,它会连续检查时间变量,以便运行动画。
void Update()
{
checkTrainArriveTime();
}
void checkTrainArriveTime()
{
if (timeManager.GetComponent<Scale2>().hour == trainArriveTimeHour && timeManager.GetComponent<Scale2>().min == trainArriveTimeMin
&& isTrainArriveConditionExecute)
{
isTrainArriveConditionExecute = false;
PlayAnimationClip("Start");
}
else if (timeManager.GetComponent<Scale2>().min != trainArriveTimeMin)
{
isTrainArriveConditionExecute = true;
}
}
随着时间的推移,此功能将播放动画。现在我有50个脚本附加到50个不同的游戏对象。它是 工作正常但绝对不是使用Update Event的正确方法。在我的代码中,有必要检查每一帧的时间 更新时额外负载。有没有有效的方法来做这个工作?。
答案 0 :(得分:0)
我可以看到你的斗争。你是对的,绝对不是最好的前进方式。
我在这里可以看到的最佳选择是创建一个singleton实例的动画管理器(每个应用程序只允许一个实例)。
我建议将动画触发逻辑移动到Update
AnimationManager
方法。
一旦你做完了。您将能够访问其实例调用AnimationManager.getInstance()
方法。
下一步是创建内部注册表,它只不过是您想要触发动画的已注册游戏对象的列表。
我不知道你的timeManager
到底是什么,但我可以想象你可能是TimeManager
控制器的一个实例,你拖放到你的公共timeManager
属性上。考虑将其转换为单身,或者至少将timeManager.GetComponent<Scale2>()
的分配转移到Awake()
方法。
从GetComponent()
GetComponent`内部调用 Update()', as it has an impact on performance.
方法非常重要。
希望它有所帮助。