UnityEditor扩展 - Vuforia license like文本输入框
来源:互联网 发布:小财神软件 编辑:程序博客网 时间:2024/06/09 22:19
接下来会用一系列实例文章,逐个功能讲解,希望能分享UnityEditor的奥义。
本文是做一个Vuforia License一样的输入框。如图:
(图1)
首先创建1对脚本(之后关于Editor的编辑,都将以一个XXX.cs和一个XXXEditor.cs成对出现)。
(图2)
License.cs
很简单,定义一个public的string类型,以便让Editor调用。[HideInInspector]属性,作用顾名思义可以在Inspector中隐藏。
由于Editor会为我们重新排版并产生一个text field,原来的可以不作显示。(当然你也可以显示出来看一下有什么效果)
using UnityEngine;public class License : MonoBehaviour{ [HideInInspector] public string mLicenseKey;void Start () {}}
LicenseEditor.cs
首先是继承Editor。并在类上方定义属性,指定是对License类的编辑[CustomEditor(typeof(License), true)]。
Editor编辑中常用的类型有SerializedProperty序列化属性,SerializedObject序列化对象。分别用来指定License中的string\int\float\bool这些数据类型和指定gameObject对象。
OnEnable中,通过serializedObject.FindProperty(" ")对两个脚本中的数据进行连接。this的量指Editor中定义的,base指License.cs中定义的。
OnInspectorGUI是一个类似Update的生命周期,会在非运行时实时刷新。
由于重新排版了,默认在License里面即使public修饰也会被隐藏。DrawDefaultInspector() 方法可以将License中的公共变量在inspector中显示出来。
EditorGUILayout.PropertyField() 就是绘制新的文本框,可以自定义框的大小。
EditorStyles.textField.wordWrap = true; 是让新的文本框内的文字自动换行,设为false则只在一行内显示。
最后所有的变更,要使用base.serializedObject.ApplyModifiedProperties()来应用,否则新的文本框是不起作用的。
using UnityEditor;using UnityEngine;[CustomEditor(typeof(License), true)]public class LicenseEditor : Editor{ private SerializedProperty mLicenseKey; private SerializedObject mLicense; //Method void OnEnable() { this.mLicenseKey = base.serializedObject.FindProperty("mLicenseKey"); } public override void OnInspectorGUI() { DrawDefaultInspector(); EditorGUILayout.PropertyField(this.mLicenseKey, new GUIContent("App License Key"), new GUILayoutOption[] { GUILayout.MinHeight(40f), GUILayout.MaxHeight(100f) }); this.mLicenseKey.stringValue = this.mLicenseKey.stringValue.Replace(" ", "").Replace("\n", "").Replace("\r", ""); EditorStyles.textField.wordWrap = true; // 自动换行 base.serializedObject.ApplyModifiedProperties(); }}
终了,看一下我们做的效果。
- UnityEditor扩展 - Vuforia license like文本输入框
- Vuforia中License Key配置
- 用击键力学扩展文本输入选项
- 用击键力学扩展文本输入选项
- UnityEditor扩展 - 编辑器中的内置属性Attribute
- 测试文本输入框
- 下拉框输入文本
- Extjs文本输入框
- 文本输入框UITextField
- UITextField/文本输入框
- UITextField文本输入框
- Vuforia开发入门三-License Manager(证书管理器)
- Vuforia开发入门(三):License Manager(证书管理器)
- How To Add a License Key To Your Vuforia App
- UnityEditor扩展编辑器实现从场景中渲染得到Cubemap
- 文本输入框、密码输入框
- 文本输入框、密码输入框
- html文本输入框,密码输入框
- iOS开发UIWebView与原生网页的交互
- JavaScript深入理解之对象
- 查询ORACLE表名 注释
- Grafana-zabbix配置模板
- JAVA源码分析-HashMap源码分析(一)
- UnityEditor扩展 - Vuforia license like文本输入框
- matlab注释方法
- class文件工具 抓包 打包压缩工具
- input事件的处理
- java坑
- DWZ框架在IE下进行文件上传,提醒JSON文件下载问题
- oracle 表空间操作
- 五,redis数据类型-无序set
- ASP.NET C#如何获取当月或上个月的第一天和最后一天