[英]UNITY Looking for a way to store temporary global delta value for a specific spell
我对统一有点陌生,目前在多人游戏中设计一个咒语架构,可以使咒语参数随环境而变化(例如角色、设备、增益等......)。
是的,它是一个多人游戏,我使用Mirror
作为多人服务框架,这意味着我可以将这些delta values
视为同步变量。
例如,我设计了一个火球法术。 这个法术的伤害可能会增加,因为我可以获得一个增益。 我的想法是使用scriptable object
来存储法术的基本参数值(例如伤害、法术半径等),然后在某处收集所有增量值(例如伤害增量)。 这个地方应该是玩家专属的。
通过这种方式,我可以通过将所有增量值添加到存储在可编写脚本的 object 中的基本伤害上来计算总伤害。
我的问题是在哪里分别存储每个咒语的这些增量值?
是否有一种全局方法来存储这些增量值而不实例化 object?
我尝试了scriptable objects
,但由于它们是资产,因此在这种非持久性场景中使用它们可能不是一个好主意。 我希望这些增量值可以在我不需要时由 GC 收集。
我还尝试在运行时创建scriptable objects
,但效果不佳。 我不想在实例化 object 后访问这些scriptable objects
,并且当 object 被销毁时scriptable objects
不再存在。 我希望这些增量值可以在伴随游戏整个生命周期的全局变量中。 所以我可以继续发射提高伤害的火球。
角色(英雄)已经有一个临时的脚本 object 来存储所有法术的增量值。 但是如果我只想提高像火球术这样的特定法术伤害呢?
或者实际上有更好的架构来实现这个拼写系统而不单独存储增量值?
在@derHugo 提醒后(非常感谢),我发现我忘了解释这是一个多人游戏。 一个简单的 static class 可能无法解决所有玩家的问题。
我发现我可以在不存储 delta 拼写参数的情况下满足我的需求。 它们可以由其他SpellCalculator
动态计算。
如果我坚持,我还可以通过在运行时动态创建ScriptableObject
来存储 delta 拼写参数。 显然,这是不必要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.