我有一个在编辑和播放模式下执行的脚本。它包含几个具有设置器的属性,这些设置器执行重要操作以保持游戏对象的数据最新。因此我可以编辑属性的值,其中许多属性都有带有
SerializeField
属性的支持字段。我想知道是否有任何有效的方法可以做到这一点,以便每当通过检查器编辑支持字段之一时,都会调用相应属性的设置器来保持游戏对象更新并启用实时预览结果。
这个问题的答案中描述的系统几乎正是我想要的,除了它只能让检查器编辑触发无参数方法,这对于很多属性的设置器不起作用。如果任何更熟悉 C# Reflection 的人可以帮助重构代码,以便在适用时将检查器中的新值传递到相应属性的 setter 中,这正是我所需要的。
OnValidate()
也不起作用,因为某些设置器会执行线程不安全的操作。此外,理想情况下,我希望不必为每个应在 Inspector 编辑时调用其设置器的属性编写大量额外代码。
您好,我了解您的问题。您可以使用 scrptable 对象将所有数据保存在一处。您可以将字段设置为私有,并且仍然使用序列化字段。 https://youtube.com/shorts/AhnbR82HpC8?si=2hgqReqtY8KWmYWe 希望这会有所帮助。或者您可以通过某种方式从中导出您的项目的解决方案!