Unity3D研究院之Inspector视图中的get/set使用
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使用的更多相关文章
- 最近遇到的几个问题,关于Unity脚本在Inspector视图中前面没有勾选框的问题
1.为什么在Inspector视图中有的脚本前面有勾选框,有的脚本前面没有? 当我想要禁用一个脚本时,发现脚本前面没有勾选框,有的却有. 解决办法:在脚本中添加start方法,然后就有勾选框了. 原因 ...
- Unity3D研究院之为什么Inspector视图中脚本前面的勾选框没了
我一个同事刚问我为啥有时候脚本的勾选项没有了?有时候不想让某条脚本执行,可以直接在编辑器中点掉勾选按钮即可.如下图所示 以前我也遇到过这个问题,但是一直都没怎么注意,因为一般情况下也用不到.今天刚好有 ...
- Unity3D研究院之Inspector面板枚举的别名与排序
虽然mono是支持unicode的.可以在枚举里写中文,但是我还是觉得写英文好一些.可是在编辑器上策划是希望看到的是中文的,还有就是枚举的展示排序功能,策划在编辑的时候为了方便希望把常用的枚举排上前面 ...
- Inspector视图中的get/set使用
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public int width { ...
- UNITY5 为什么Inspector视图中脚本前面的勾选框没了
结果发现了一个奇葩的问题..凡事脚本没有勾选项的,都是因为你的脚本没有Start方法..如果你想让勾选框显示出来,把如下方法加入即可,不信你可以试试.嘿嘿.
- Unity3D研究院之动态修改烘培贴图的大小&脚本烘培场景
Unity默认烘培场景以后每张烘培贴图的大小是1024.但是有可能你的场景比较简单,用1024会比较浪费.如下图所示,这是我的一个场景的烘培贴图,右上角一大部分完全是没有用到,但是它却占着空间. 有 ...
- Unity3D研究院之拓展Scene视图
Scene视图是编辑游戏模型的地方,其实它还可以进行编辑.如下图所示,我给Scene视图做了简单的编辑. Scene视图的拓展是基于对象的,意思就是你必须在Hierarchy视图中选择一个对象才行.H ...
- (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
- Unity3D研究院之手游开发中所有特殊的文件夹
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
随机推荐
- git使用代理clone加速
不设置代理10kb/s不到....,设置后,500kb/s左右跑- 开shadowsocks,代理127.0.0.1:1080 编写一个脚本 /YOUR PATH/gitproxy.sh #!/bin ...
- python的特殊方法总结
1.跟运算相关的特殊方法 2.跟运算符相关的方法
- Integer.ParseInt()异常
这里传参数:bookPage.nextPage,action接收到的是string型. 程序需要将string转成int来使用. 用上try { pageNUmber = Integer.parseI ...
- Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类
该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...
- Jenkins连接git时出现“Failed to connect to repository : Command ... HEAD" returned status code 128:”的问题解决
网上说的解决方法如下: 其实生成ssh时不应该使用当前用户去生成ssh,而是使用jenkins这个用户去生成ssh,然后再去git服务器上配置你生成key,最后再jenkins上配置返回给你的key. ...
- f5压缩
F5应用加速 编辑 F5在4个方面对Web应用提速: 一降低网络传输的压力,最典型技术是压缩 F5的加速技术把100K的页面压缩到20K在广域网上传输,一些标准的浏览器如IE.火狐可以自动解压,这一过 ...
- Android性能优化第(二)篇---Memory Monitor检测内存泄露
上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露的问题,现在通过Android Studio自带工具Memory Monitor 检测出 ...
- 安装 Groovy
brew install groovy http://wiki.jikexueyuan.com/project/groovy-introduction/install-groovy.html
- windows 网络编程[转]
利用winsock编写网络应用程序服务端的步骤简述如下WSAStartup 初始化网络编程库 socket 创建套接字 bind 指定地址.端口,绑定套接字 listen 进入监听状态 accept ...
- DevExpress控件之LookupEdit,ComboBoxEdit
ComboBoxEdit 1. ComBoxEdit没有DisplayMember 和 ValueMember 属性,只能获取显示的值2.当前选定值comboBoxEdit1.Propertie ...