Unity 关于属性的get/set

学习Unity的可能多数是C#转过来的, 一进来的时候你会发现Unity编写代码,在一些视频或文章中.基本都没有用过get/set使用, 多数是public string name;这样写的公开字段,可能在设计的时候
视图上设置字段无法与get/set联动起来(只是一种猜测)
   
[SerializeField]可以让字段显示在Inspector上面.private字段也可以.
   
在Inspector中设置属性,并没有执行set方法

[SerializeField]
    private string name;
    public string Name
    {
        get { return name; }
        set
        {
            Debug.Log("通过属性设置");
            name = value;
        }
    }

如果你需要在编辑器设置属性,相应set方法需要以下做法

创建TestInspector.cs放在Editor目录下

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestInspector : Editor
{
    Test model;
    public override void OnInspectorGUI()
    {
        model = target as Test;
        string name = EditorGUILayout.TextField("名字",model.name);
        if (model.Name != name)
        {
            model.Name = name;
        }

        base.DrawDefaultInspector();
    }

}

Test实体类:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {

    //[SerializeField]
    private string name;

    public string Name
    {
        get
        {
            Debug.Log("通过属性get设置");
            return name;
        }
        set
        {
            Debug.Log("通过属性set设置");
            name = value;
        }
    }

}

原文地址: 雨凇MOMO研究学院http://www.xuanyusong.com/archives/3406

时间: 2024-08-06 19:48:58

Unity 关于属性的get/set的相关文章

Unity Camera属性

Camera属性 1.Clear Flags 清除标记:决定屏幕的那部分将被清除.当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的. 2.Background 背景:在镜头中的所有元素描绘完成且没有天空盒的情况下,将选中的颜色应用到剩余的屏幕. 3.Culling Mask 取消遮罩:包含或忽略相机渲染对象层.在检视视图中为对象指派层. 4.Projection 投射:切换摄像机的模拟透视功能. (1) Perspective 透视:相机将用完全透视的方式来渲染对象. (2) Ortho

Unity 扩展属性自定义绘制

这么晚了准备睡觉的时候,去学习了一会. 发现一个标题好奇的点进去. 居然是自定义绘制属性.  在前几天这个问题把我难住了,没想到几分钟就能解决的问题. 我花了半天时间使用反射去解决...  如果我们想要让属性自定义绘制窗体,首先会想到扩展InspectorEditor, 这章讲解.原来属性可以独立绘制,亮瞎我的双眼! 如图: 步骤: 1. 定义绘制特性描述类(以数据提供给 –> 绘制类 –> 绘制) 2. 定义属性自定义绘制类      3. 给一个字段添加你的特性 1. 绘制特性描述类 us

Unity一些属性的用法

[SerializeField] 在Inspector版面中显示非public属性,并且序列化:若写在public前面,等于没写……(至于序列化是啥,自行脑补……),上图: [NonSerialized]在Inspector版面中隐藏public属性,并且序列化:如果写在非public属性前面,等于没写……,上图: [HideInInspector] 在Inspector版面中隐藏public属性,与上面相比,只是隐藏,没有序不序列化的功能……,上图: [AddComponentMenu("XX

cardboard sdk for unity 系统分析 - 属性行为分析CardBoard类

一.CardBoard类是个单例类,全局只有一个CardBoard对像且在需要时才生成: CardBoard中主要使用了BaseVRDevice device这个对像,而这个对像也是单例类BaseVRDevice的惟一对像: CardboardAndroidDevice继承于BaseVRDevice: 所以相互作用的对像为CardboardAndroidDevice的惟一对像: 因此,可以说整个应用通过cardboard对像来进行各种设置,而cardboard对像又是通过对cardboardan

C#开发Unity游戏教程之游戏对象的属性变量

C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性--变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象.上一章仅仅是简单的介绍了脚本中的变量,读者一定只是瘾,如今好了.作者将使用一整章的篇幅介绍变量与属性. Unity游戏对象的属性 在Unity中.游戏场景中游戏对象的属性,能够在Inspector视图里查看,想看哪个游戏对象的属性.就使用鼠标选中哪个游戏对象就可以. 比如,要查看游戏场景中Main Camer

Unity编辑器扩展 – Menu Items

参考:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu-items 通过Unity MenuItem属性类可以扩展主菜单.属性栏内容菜单.层级栏菜单及资源栏菜单. MenuItem可以将任意静态函数转换为菜单命令,只有静态函数能使用MenuItem属性. 添加菜单选项 添加一个简单的主菜单按钮 using UnityEditor; using UnityE

unity 对Animator动画系统的研究

unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看文章边查阅文档,最好能动手测试. 文章的开始之前,先讲几个基本的知识的: 1.创建动画的一个基本步骤是设置一个unity3d可理解的简化后的骨骼到骨架中实际骨骼的映射:在Mecanim的术语中,这个映射称为Avatar,即avatar是骨骼到骨架的映射. (图片来自网) Avatar主要用于类人骨骼

Unity的Attribute(特性)还算多吧

转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html ?? 属性 (Attribute) 使用 Unity 的C#语言 ,利用属性(Attribute)来类定义和变量定义或区分其他的变量,您可以设置一种特殊行为.* 1 例如,您添加[SerializeField]属性变量,私有变量标识序列化. [SerializeField] int  计数;

Cardboard Unity SDK Reference 翻译版

最近正在准备雅思,趁机翻译了Cardboard的文档,这个文档挂在谷歌官网上,不翻墙根本看不了,翻了墙这个网页也很不稳定,经常上不去,所以就搬运了过来,不过我英语水平实在有限,这次翻译也是对自己的一次锻炼,有的地方我自己明白但是也很难表述好,还请大神轻喷. 里面有很多奇怪的词汇查不到,都是我自己猜着翻译的,还有的词查到了也不知道是啥,比如"剔除掩膜"啥的-,翻译工作量也很大,都是我自己挤时间翻译的,还请大神们指出翻译的不好的地方,英文版请见我上一篇博客:http://blog.csdn