get set 使用起来很方便,但是编辑时在Inspector视图中问题就来了,因为get/set的属性即使是public了,但是在Inspector视图中依然不显示。。谷歌一下估计就是下面这样的答案。

public int width
{
get {
return _width;
}
set {
_width = value;
}
}
[SerializeField]
private int _width;

如下图所示问题又来了,因为在编辑模式下修改Width的值,但是代码中的 set 压根就没执行。

先看看[SerializeField]的含义,它用来序列化一个区域,通俗的来说[SerializeField]可以让private 的属性在Inspector视图中显示出来。。

那么上面的set没执行的原因就出来了,因为我们改的是private _width并不是 public width。由此可见此段代码在编辑模式下是毫无用处的。。

我偏偏就想在编辑时响应 set 的操作怎么办?我想做的是在set里面加一个自己写的方法。

TestInspector.cs放在Editor目录下

Test挂在任意游戏对象上。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor; [CustomEditor(typeof(Test))]
public class MyEditor : Editor { public override void OnInspectorGUI()
{
Test model = target as Test;
int width= EditorGUILayout.IntField("Width",model.mWidth);//先读取私有变量的值
model.mWidth = width;//再将值赋予公有变量,就调用了set了。
base.DrawDefaultInspector();
}
}

如下图所示,在编辑模式下用鼠标修改width的值。 log输出了说明 get set 已经响应了。

感谢下面好友的留言,另外一种实现的方式,我试了一下也很好用。

https://github.com/LMNRY/SetProperty

Unity3D研究院之Inspector视图中的get/set使用的更多相关文章

  1. 最近遇到的几个问题,关于Unity脚本在Inspector视图中前面没有勾选框的问题

    1.为什么在Inspector视图中有的脚本前面有勾选框,有的脚本前面没有? 当我想要禁用一个脚本时,发现脚本前面没有勾选框,有的却有. 解决办法:在脚本中添加start方法,然后就有勾选框了. 原因 ...

  2. Unity3D研究院之为什么Inspector视图中脚本前面的勾选框没了

    我一个同事刚问我为啥有时候脚本的勾选项没有了?有时候不想让某条脚本执行,可以直接在编辑器中点掉勾选按钮即可.如下图所示 以前我也遇到过这个问题,但是一直都没怎么注意,因为一般情况下也用不到.今天刚好有 ...

  3. Unity3D研究院之Inspector面板枚举的别名与排序

    虽然mono是支持unicode的.可以在枚举里写中文,但是我还是觉得写英文好一些.可是在编辑器上策划是希望看到的是中文的,还有就是枚举的展示排序功能,策划在编辑的时候为了方便希望把常用的枚举排上前面 ...

  4. Inspector视图中的get/set使用

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public int width { ...

  5. UNITY5 为什么Inspector视图中脚本前面的勾选框没了

    结果发现了一个奇葩的问题..凡事脚本没有勾选项的,都是因为你的脚本没有Start方法..如果你想让勾选框显示出来,把如下方法加入即可,不信你可以试试.嘿嘿.

  6. Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景

    Unity默认烘培场景以后每张烘培贴图的大小是1024.但是有可能你的场景比较简单,用1024会比较浪费.如下图所示,这是我的一个场景的烘培贴图,右上角一大部分完全是没有用到,但是它却占着空间.  有 ...

  7. Unity3D研究院之拓展Scene视图

    Scene视图是编辑游戏模型的地方,其实它还可以进行编辑.如下图所示,我给Scene视图做了简单的编辑. Scene视图的拓展是基于对象的,意思就是你必须在Hierarchy视图中选择一个对象才行.H ...

  8. (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)

    这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor  和 /Edi ...

  9. Unity3D研究院之手游开发中所有特殊的文件夹

    这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor  和 /Edi ...

随机推荐

  1. Python学习杂记_5_列表常用操作

    列表操作 列表时用方括号括起来的一组元素值,是可变变量,可通过下表取值,也可以通过下表来修改值,列表中的元素是有序的,可以是不同的基本数据类型,如: names=[1, 2, 3, “abc”, “d ...

  2. springBoot api接口

    application/json 请求接口 @RequestMapping(value = "/getBaseData", method = RequestMethod.POST, ...

  3. Integer.ParseInt()异常

    这里传参数:bookPage.nextPage,action接收到的是string型. 程序需要将string转成int来使用. 用上try { pageNUmber = Integer.parseI ...

  4. springboot集成PageHelper,支持springboot2.0以上版本

    第一步:pom文件还是需要引入依赖 <!--mybatis的分页插件--> <dependency> <groupId>com.github.pagehelper& ...

  5. 解决每次启动Office都出出现设置向导的问题

    昨天不知道怎么地,每次打开Excel都会出现"正在配置Office"的设置向导,并且修复.重置用户均无法解决. 在网上搜索了一下,找到了一个解决方法:把"C:\Progr ...

  6. 评分条RatingBar Android

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  7. 【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么

    本篇 将针对[日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么]这一个主题进行探索. 这个测试项目是根据[spr ...

  8. 队列容易queue

    /*先进先出*/#include<iostream>#include<queue> //使用队列必须包含头文件using namespace std;int main(){ q ...

  9. js ioc 实现

    var ar=[]; var o1={ id:'o1', o2:null } ar.push(o1); var o2={ id:'o2', o1:null } ar.push(o2) var ioc= ...

  10. 一款很实用的Memcache监控工具

    装了memcahce以后想对使用情况详细了解一下,如分配的内存够不够,都存了什么,经百度后发现这款工具灰常实用!此工具来自Memcache Pecl 中 http://pecl.php.net/pac ...