我目前正在统一创建一个 rougelike 游戏,我现在正在为其创建一个项目系统。目前在我的架构中有一些实体可以有项目。实体也有统计数据,当一个项目被添加到一个实体时,它应该对实体的正确统计数据应用修饰符。项目还应该能够不对统计数据应用修饰符,而是赋予实体新的能力(通常通过调整指示它们是否可以做某事的标志,例如二段跳)。这些物品还应该有一个物理咒语,即实体可以走进去将物品添加到实体的拾取器。
我在以不会感到笨拙或无效的方式将此结构实施到我的项目中时遇到问题。
我已经推测了一些我可以实现这个的方法。可能有一个 Item 简单抽象类,然后由所有不同的项目继承,它们都覆盖自己的方法来影响实体。然后我会有一个在游戏对象上实例化并给出一个项目来表示的单一行为 ItemPickup。这有一些限制,例如,我无法在不进入代码的情况下轻松更改项目值。我也很难设置具有预选物品的拾音器。 我想到的另一个解决方案是创建一个继承自 scriptableobject 的抽象 Item 类。这将使在编辑器中更改项目的值变得更加容易。它还可以更轻松地创建预选项目拾取。这里的问题是所有项目都需要与实体进行不同的交互,因此我需要为从 Item 类继承的项目分别创建一个类(就像第一个解决方案)。这让我有点伤脑筋,因为可编写脚本的对象背后的含义是它们应该是抽象的并且可以通过仅更改实例中的值来更改。并通过为每个项目创建一个可编写脚本的对象类,然后为每个项目创建一个实例,感觉是错误和无害的。
有没有办法可以更轻松地编辑简单类的值? (也许是自定义编辑器窗口?) 或者,有什么办法可以满足我对每个可编写脚本对象类实例的不同方法的需求吗?