首页 > 解决方案 > 统一。某些字段在 Play 上为空

问题描述

我的意思是那些领域。

[SerializeField]
public Type gameStateType;

[SerializeField]
public IGameStateParams gameStateParams;

我在编辑器方法中设置了这些字段,但是,当单击“播放”时,它们变为空。我可以处理Type(我的系统类型都支持存储在字典中,所以我可以只使用它们的 ID 来获取Type),但不能处理IWhatever实现的实例。能解决吗?

如果没有,有没有办法在场景游戏对象中存储任何IWhatever实现的实例?

标签: c#unity3dunity-editor

解决方案


这些类型(Type和接口)不可序列化..因此,虽然您当然可以使用编辑器脚本来传递值,但这些字段将不会被序列化 => 不保存 => 不会在运行时初始化。

当您进入 PlayMode 时,场景中的所有对象都会重新加载 => 从头开始​​反序列化 => 因为您的值从未被序列化,所以它们也不会被反序列化。

请参阅脚本序列化 -> 序列化规则


推荐阅读