Unity3D 使用 Editor 脚本,自定义 脚本的属性面板
1. 先有一个普通的 继承自 MonoBehaviour 的脚本.
2. 创建一个 Editor 文件夹, 写 关于 UnityEditor 的脚本 都要放在这个文件夹下,不然会编译出错.
具体的实现如下:
using UnityEngine;
using UnityEditor;
using System.Collections; [CustomEditor(typeof(TestBehaviour))] // 这里是表示,这个Editor是哪个脚本的界面
[CanEditMultipleObjects] // 可以一起编辑多个物体
public class TestBehaviourInspector : Editor { // 继承 Editor 类
// 这里是定义几个你要去控制的那个脚本里参数.
// moveType 是一个 enum 类型
SerializedProperty isPlaying, Count, moveType; // 初始化, 将刚声明的参数与那个脚本里面的属性相关联
void OnEnable() {
isPlaying = serializedObject.FindProperty("isPlaying");
Count = serializedObject.FindProperty("Count");
moveType = serializedObject.FindProperty("moveType");
} // Editor GUI 具体界面在这里写
public override void OnInspectorGUI() {
// 官方说要先这样
serializedObject.Update(); // 使用一个 垂直 布局
EditorGUILayout.BeginVertical(); // 如果是选择多个物体的情况下. 要先判断一下,这个属性上面的值是不是都相同,相同才可以一起改变
if (!isPlaying.hasMultipleDifferentValues) {
isPlaying.boolValue = EditorGUILayout.Toggle("Is Playing", isPlaying.boolValue);
} // 这是如果处理 enum 类型
if (!moveType.hasMultipleDifferentValues) {
moveType.enumValueIndex = (int)(TestBehaviour.MoveType)EditorGUILayout.EnumPopup("Move Type", (TestBehaviour.MoveType)moveType.enumValueIndex);
} if (!Count.hasMultipleDifferentValues) {
Count.intValue = EditorGUILayout.IntField("Count", Count.intValue); // 还可以使用 Button
if (GUILayout.Button("Print Count")) {
Debug.Log(Count.intValue);
}
} EditorGUILayout.EndVertical(); // 官方说 要在这里这样一下.应用所有的修改
serializedObject.ApplyModifiedProperties();
}
}
Unity3D 使用 Editor 脚本,自定义 脚本的属性面板的更多相关文章
- unity3d 特殊文件夹和脚本编译顺序
unity3d 特殊文件夹和脚本编译顺序 转自http://blog.csdn.net/u010019717/article/details/40474631 大多数情况下,您可以选择任何你喜欢的文件 ...
- 适用于 Windows 的自定义脚本扩展
自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...
- xmake从入门到精通12:通过自定义脚本实现更灵活地配置
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文主要详细讲解下,如何通过添加自定义的脚本,在脚 ...
- Unity3D Player角色移动控制脚本
1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position.之前写过类似的文章,这次增加了平时常用API的脚本,每个脚本均手打测试可用. 2. ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- ArcMap自定义脚本工具制作
原文 ArcMap自定义脚本工具制作 在制图的前期,一般需要做一些数据的整理,如图层合并.裁剪等工作.虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧.如批量裁剪,虽然可以实现,但出来的结 ...
- zabbix 获取不到自定义脚本的值解决
agent端: zabbix 自定义脚本 [root@localhost script]# cat check_ping.sh #!/bin/bash result=$(/usr/local/nagi ...
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...
- 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型自定义脚本
自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型自定义脚本
随机推荐
- build a git repo and clone
First machine: git init --bare gitrepo.git Second machine: git clone user@server:~/gitrepo.git cd gi ...
- Scut游戏服务器免费开源框架--快速开发(2)
Scut快速开发(2) Python脚本开发 1 开发环境 Scut Lib版本:5.2.3.2 需要安装的软件 a) IIS和消息队列(MSMQ) 进入控制面板,程序和功能 b) ...
- JQuery中ajax跨域问题
var url = "http://apis.juhe.cn/idcard/index?key=e0a6277420506b2816b82f7d7821976c&cardno=&qu ...
- Oracle Study Note : Tablespace and Data Files
1.how to create a tablespace that employs the most common features create tablespace tb_name #create ...
- 菜鸟学习Struts——国际化
一.概念 国际化:界面上的语言可以根据用户所在的地区改变显示语言. 如图: 二.实例 下面就一步一步的教大家利用Struts实现国际化. 1.编写资源文件 这个资源文件就是界面上显示的字符,资源文件里 ...
- Union-SQL Server学习笔记
1.简单笔记 数据库查询语句中,通过UNION组合查询语句,可以将两个或更多查询的结果组合为单个结果集,该结果集包含组合查询中的所有查询的全部行. 利用UNION语句可以实现将不同数据表中符合条件,不 ...
- IOS 其他 - 如何让 app 支持32位和64位
让App支持32-bit和64-bit基本步骤 1.确保Xcode版本号>=5.0.1 2.更新project settings, minimum deployment target >= ...
- String、StringBuffer与StringBuilder的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...
- gameObject, vector and transform
调用其它组件中成员 通过GameObject(游戏物体). Base class for all entities in Unity scenes. 是Unity场景里面所有实体的基类. 可以理解为 ...
- Java应用的优秀管理工具Maven的下载安装及配置
1.进入Maven的官方下载地址:http://maven.apache.org/download.cgi 2.向下滚动页面,点击这个zip包进行下载: 3.将压缩包解压后剪切到Mac的某个目录下就完 ...