你好,我想转行成为一名游戏开发程序员(我之前工作过于web开发)。我是新手,目前正在开发我的第一几个项目。这里的目标是学习最佳实践,同时准备我的个人项目。

目前,我正在开发一个2D无尽跑酷游戏,避免障碍物并收集金币。 我正在尝试引入一个功能系统,给玩家提供临时权力和好处。

正如我所提到的,我正在尝试以优先学习最佳实践和架构的方式开发这个项目,遵循合适的面向对象编程实践和SOLID原则(至少在实施方面我是新手)。我希望学习编写可以轻松理解、扩展和维护的代码。

我已经想出了如何处理我的功能系统的初步想法,但我需要一些反馈和建议。

我想出的功能类型(以及我将来的想法)可能会分为不同的类型,这些类型需要支持。目前我有两个类型

  1. 功能只在其持续时间到期时自然过期(无法在此之前被取消)
  2. 功能可以在其持续时间结束之前被取消,如果满足某些条件(例如,盾牌功能在玩家被击中时会被取消)

我想出了一个方法来实现这一点,但我不确定这是理想的方法。

我的当前想法:

  1. 会有一个IPowerUp接口,包含所有类型功能的共同属性
  2. 每个类型都会被一个抽象类代表,这个抽象类会继承IPowerUp。每个这些基抽象类(代表类型)都会有通用方法(例如,激活、自然过期、强制取消等逻辑),这些方法会被所有不同类型的功能所使用,这些功能属于特定的类型。
  3. 会有一个PowerUpManager脚本来管理功能。

我是否有正确的思维方式?
请提供一些改进和详细信息来帮助我了解如何思考这个问题。任何帮助都非常感谢。