You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity:结构体内部类无法序列化显示的原因及解决办法

Unity Inspector中自定义结构体里的类无法显示的问题分析与解决

问题代码

public class TopClass
{
    [System.Serializable] 
    public struct WantToBeVisibleInInspector
    {
        public SomeEnum appearsInInspector; 
        public SomeClass doesNOTAppearInInspector; 
    } 
    [SerializeField] private WantToBeVisibleInInspector[] meWant;
}

问题现象

在Unity的Inspector面板中,SomeEnum可正常显示,但SomeClass对应的字段无法显示。

原因解析

  • 枚举类型在C#里默认具备可序列化特性,Unity的序列化系统能直接识别,所以SomeEnum字段能正常出现在Inspector里。
  • 自定义的普通C#类(比如SomeClass)默认不被Unity序列化系统识别,必须手动标记[System.Serializable]特性,否则即使放在可序列化的结构体里,也无法在Inspector中显示。

解决方法

给SomeClass添加[System.Serializable]特性即可,示例如下:

[System.Serializable]
public class SomeClass
{
    // 这里可以定义类的成员变量,比如:
    public int exampleInt;
    public string exampleString;
}

注意:如果SomeClass是继承自MonoBehaviour、ScriptableObject这类Unity自带的可序列化基类,不需要额外加[Serializable],因为这些基类已经自带序列化支持。

内容的提问来源于stack exchange,提问作者IndividualGames

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:30:42