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面板中

时间: 2024-11-15 01:35:35

Unity中HideInInspector和SerializeField以及Serializable的相关文章

unity中可以使一个私有的变量在Inspector面板中显示出来 和 SerializeField的使用

[HideInInspector] 可以使一个公有的变量在Inspector面板中隐藏起来 [SerializeField] 可以使一个私有的变量在Inspector面板中显示出来

在Unity中使用贝塞尔曲线(转)

鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是起点,一个是终点.在这条曲线之上还会有两个可以任意移动的点来控制贝塞尔曲线的角度.如下图所示,点1 和点4 就是起点和终点,点2 和点3 就是控制曲线角度的两个动态点. 如下图所示.使用拖动条来让曲线发生旋转,大家会看的更加清晰.目前我们看到的被塞尔曲线是在平面中完成的,其实贝塞尔曲线是完全 支持3

Protobuf-net在Unity中的序列化与反序列化

本篇中我们只讲解如何在Unity中对Protobuf-net进行序列化(Serialize)与反序列化(Deserialize),关于Unity的socket(插座)网络通信部分我们后续开篇. 首先去Protobuf-net的Google下载点下载protobuf-net类库:https://code.google.com/p/protobuf-net/downloads/list这里用的是目前最新的protobuf-net r668下载完毕后打开压缩包,在Full\unity中找到protob

XML文件在Unity中的序列化

我们在使用Unity读取文件或者消息传递的时候,经常说到序列化.什么是序列化?序列化的意思就是我们的数据是按照一定的顺序进行赋值的,这个顺序是一定的.它主要是为了方便变量赋值.在Unity中我们也经常使用这种方法.例如我们可以这样写: 在我们需要序列化的前面加上[System.Serializable]用于告诉C#以下结构是我们需要序列化的.下面我们就说一下如何使用XML进行序列化. 我们不能直接写XML文件,我们一般是通过Excel表格将其转化成XML格式,我们需要转化成啥格式才能比较好的序列

Unity中序列化和反序列化

为了满足面向对象中的封装性,我们通常使用private关键字使变量私有化,让外界无法访问修改,起到保护作用. 但是一些特殊情况,我们希望在Unity中Inspector面板中修改到脚本组件中的私有成员.Unity为我们提供了序列化和反序列化. 序列化:利用关键字 [SerializeField] 让私有成员在Inspector面板上显示出来. 反序列化:利用关键字 [System.NonSerialized] 让公有成员不在在Inspector面板上显示出来.(只让其他对象通过脚本来进行访问)

【原创】在Unity中关于多态转换与序列化保存的细节

在Unity中关于多态转换与序列化保存的细节 环境: 在unity中为类变量分类. [System.Serializable] public class dllProperty { public int num1 = 1; public string name1 = "dll"; public bool isOn = false; } [System.Serializable] public class myProperty : dllProperty { public int num

NGUI研究院之在Unity中使用贝塞尔曲线(六)[转]

鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是起点,一个是终点.在这条曲线之上还会有两个可以任意移动的点来控制贝塞尔曲线的角度.如下图所示,点1 和点4 就是起点和终点,点2 和点3 就是控制曲线角度的两个动态点. 如下图所示.使用拖动条来让曲线发生旋转,大家会看的更加清晰.目前我们看到的被塞尔曲线是在平面中完成的,其实贝塞尔曲线是完全支持3D

NGUI研究之在Unity中使用贝塞尔曲线

鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么我迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是起点,一个是终点.在这条曲线之上还会有两个可以任意移动的点来控制贝塞尔曲线的角度.如下图所示,点1 和点4 就是起点和终点,点2 和点3 就是控制曲线角度的两个动态点.上一章分享了开发项目的一些使用心得比较细节对新手很有用可以看下. 如下图所示.使用拖动条来让曲线发生旋转,大家会看的更加清晰.目前我们看到

Unity中实现网格轮廓效果

问题背景: 最近要实现选中实体的高亮效果,要那种类似于unity中Outline的效果,网格轮廓高亮效果. 效果图: 具体代码: OutlineEffect.cs 实体高亮效果类: 轮廓边总控制类,该脚本需要挂载到场景相机上 1 using UnityEngine; 2 using System.Collections.Generic; 3 using UnityEngine.Rendering; 4 5 namespace Tx3d.Framework 6 { 7 [DisallowMulti