UNITY 寻找一种方法来存储特定法术的临时全局增量值

UNITY Looking for a way to store temporary global delta value for a specific spell

我是 Unity 的新手,目前正在设计一个 多人游戏 的法术架构,它可以使法术参数随环境(例如角色、装备、增益)而变化等等...).

是的,这是一个多人游戏,我正在使用Mirror作为多人服务框架,这意味着我可以考虑这些delta values 作为同步变量。

比如我设计了一个火球法术。这个法术的伤害可能会增加,因为我可以获得增益。我的想法是使用 scriptable object 来存储法术的基本参数值(例如伤害,法术半径等),然后将所有增量值(例如伤害增量)收集到某个地方。这个地方应该是一个玩家专属的。

通过这种方式,我可以通过将存储在脚本对象中的基本伤害的所有增量值相加来计算总伤害。

我的问题是每个法术的增量值分别存储在哪里?

是否有一种全局方法可以在不实例化对象的情况下存储这些增量值?

我试过 scriptable objects 但由于它们是资产,在这种非持久性场景中使用它们可能不是一个好主意。我希望这些增量值可以在我不需要的时候被 GC 收集。

我还尝试在运行时创建 scriptable objects,但效果不佳。我不想在实例化对象后访问这些scriptable objects,并且当对象被销毁时scriptable objects不再存在。我希望这些增量值可以存在于伴随游戏整个生命周期的全局变量中。这样我就可以继续发射提高伤害的火球

角色(英雄)已经有一个临时的可编写脚本的对象来存储所有法术的增量值。但是,如果我只想提高火球术等特定法术伤害怎么办?

或者实际上有更好的架构来实现这个拼写系统而不单独存储增量值?

经@derHugo提醒(万分感谢),发现忘记说明这是多人游戏了。针对所有玩家的简单静态 class 可能无法解决此问题。

我发现我可以在不存储 delta 拼写参数的情况下满足我的需要。它们可以通过其他 SpellCalculator.

动态计算

如果我坚持,我还可以通过在运行时动态创建ScriptableObject来存储delta拼写参数。显然,这是不必要的。