我指的是那些字段。
[SerializeField]
public Type gameStateType;
[SerializeField]
public IGameStateParams gameStateParams;
我在编辑器方法中设置了这些字段,但是,当单击 Play 时,它们变为空。 我可以处理 Type(所有都由存储在字典中的系统类型支持,因此我可以使用它们的 ID 来获取 Type),但不能处理 IWhatever 实现的实例。 能解决吗?
如果没有,有没有办法在场景游戏对象中存储任何IWhatever实现的实例?
这些类型(
Type
和接口)不是可序列化的..因此,虽然您当然可以使用编辑器脚本传入值,但这些字段不会被序列化=>不保存=>不会在运行时初始化。
当您进入 PlayMode 时,场景中的所有对象都会重新加载 => 从头开始反序列化 => 因为您的值从未被序列化,所以它们也不会被反序列化。
[SerializeReference]
- 但前提是实现类型实际上是 UnityEngine.Object
(主要是 Component
/MonoBehaviour
、ScriptableObject
)