使用协议和基础实现游戏状态 Class

Game State Implementation Using Protocol And Base Class

从我目前所读的内容来看,Objective C 似乎没有摘要 classes。我正在尝试实现一个类似于 Apple 刚刚在 GameKit 中宣布的游戏状态管理器(GKState 和 GKStateMachine)。

到目前为止,我的解决方案涉及创建一个名为 BaseGameState 的基础状态 class,它遵循我创建的名为 GameState[=] 的协议20=]。对于游戏玩法所需的每个状态,我将子 class BaseGameState class。我的 BaseGameState class 就在那里,这样我就可以子 class 它并且不会真正做任何事情,但我希望我的状态机使用一种类型。控制我所处状态的 class 称为 GameStateMachine,它将包含一个从 BaseGameState 子class 的对象数组。

对我来说,这似乎是一个糟糕的解决方案,我想知道除了使用 GameKit classes(我目前无法使用,因为我需要这个应用程序来定位)之外是否有一个标准的方法来做到这一点Yosemite).

您不需要基础 class,尤其是当它不提供任何实现时。这也更加灵活,因为它使用户可以自由使用不同的基础 class 或使用您的协议的实现扩展现有的 class。

只需让您的 GameStateMachine 存储符合您的 GameState 协议的任何对象的数组 - 即 id <GameState>