zoukankan      html  css  js  c++  java
  • Unity中HideInInspector和SerializeField以及Serializable

    首先,Unity会自动为Public变量做序列化,序列化的意思是说再次读取Unity时序列化的变量是有值的,不需要你再次去赋值,因为它已经被保存下来。
    然后是,什么样的值会被显示在面板上?
    已经被序列化,但是没有用HideInInspector标记的值。

    [HideInInspector]表示将原本显示在面板上的序列化值隐藏起来。

    [SerializeField]表示将原本不会被序列化的私有变量和保护变量可以序列化,这么他们在下次读取时,就是你上次赋值的值。

    1如果name是公有的序列化变量。
    1.1如果你想要在面板中看到name,那么用:
    public int name;

    1.2如果你不想在面板中看到name,那么用:
    [HideInInspector]
    public int name;
    // 这样name可以在程序中被代码赋值,但不会在面板中看到并手动设置赋值。

    2 如果name是私有的序列化变量,你想在面板中读取并保存,那么用:
    [SerializeField]
    private int name;

    3.如果name是私有的序列化变量,你想在面板中读取,但是不保存,那么用:
    [HideInInspector][SerializedField]
    private int name;
    public int Name{
        get{return name;}
    }
    然后在Editor中显示,
    EditorGUILayout.LabelField("value",game.Name.ToString());

    4如果name是私有序列化变量,你不想在面板中做任何操作(不想看到,也不想写),但是想要在程序中给它赋值,那么用。
    [HideInInspector][SerializedField]
    private int name;
    public int Name{
        get{return name;}
        set{name = value;}
    }

    可以把一个类标记为[Serializable]

    [Serializable]

    public class person
    {
        [SerializeField]
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public string age;
    }

    然后:

    [SerializeField]
     private person p = new person();

    name和age都会显示在unity面板中

  • 相关阅读:
    160328、rabbitMQ集群部署示例
    160325、虚拟机三种网路设置
    160324、特殊时间下拉框
    export export-default import 使用场景
    vue项目工具文件utils.js javascript常用工具类,javascript常用工具类,util.js
    如何在vuejs中抽出公共代码
    vue 各种 import 引入
    es6环境中,export与import使用方法
    基于rem的移动端响应式适配方案(详解) 移动端H5页面的设计稿尺寸大小规范
    JS获取子节点、父节点和兄弟节点的方法实例总结
  • 原文地址:https://www.cnblogs.com/nsky/p/4476279.html
Copyright © 2011-2022 走看看