【发布时间】:2020-07-04 23:29:09
【问题描述】:
目前我的游戏有两种模式,构建模式和游戏模式。
对象在构建模式中的行为与在播放模式中的行为不同。
处理这些对象的最简单方法是什么?我应该使用切换吗?考虑到我在 OnUpdate 中的内容,我当前的性能和代码可读性设置如何?
这是一个示例,用于检查我制作的 GameController 是处于构建模式还是播放模式。当这些模式启动时,它也会获取,并通过操作布尔值运行一次函数。我正在寻找可以帮助我在优化游戏、代码可读性和代码的整体格式时做出更好决策的答案。我知道必须有一种更简单的方法,无论是使用侦听器还是使用事件/触发器。
游戏中一次可以有大约一百个这样的物品,所以我想确保我不会因为太多的更新调用而毁掉游戏。现在,虽然我有很多这些项目,但性能并没有真正下降,但这不是不优化我的游戏的理由。
public class GameItem: MonoBehaviour
{
//....
private void Update()
{
CheckMode();
}
// Checks Current Mode, And If StartingMode
private void CheckMode()
{
// check to see if starting build mode,
if (!gameController.inPlayMode)
{
if (!startingBuildMode)
{
WhenStartingBuildMode();
startingPlayMode = false;
startingBuildMode = true;
}
WhileInBuildMode();
return;
}
// check to see if starting play mode,
if (!startingPlayMode)
{
startingPlayMode = true;
WhenStartingPlayMode();
startingBuildMode = false;
}
// what to do while in play mode
WhileInPlayMode();
}
}
【问题讨论】:
-
能否提供一些 OnUpdate() 方法的代码?
-
更新中?在更新时运行 CheckMode() 类,该类不断运行 WhileInPlayMode() 或 WhileInBuildMode()。这是一个基类,因此这些函数根据项目执行不同的操作。例如,一个敌方物体会不断检查玩家的位置。或者一个箱子会不断更新,无论它是否打开。
标签: c# performance unity3d readability