unity编辑器对对象属性的编辑
来源:互联网 发布:全自动编程软件 编辑:程序博客网 时间:2024/05/03 19:47
unity编辑器据说可以写很多的插件,了解过还没有怎么写过,这次试了试,搞了一会,终于搞出来了。
1.新建两个C#代码脚本,一个命名为NPC,另一个为NPCEditor。并且新建一个文件夹命名为Editor,将NPCEditor脚本放入其中。如图1-1
2.NPC脚本的代码如图2-1
3.NPCEditor的脚本如下:
using UnityEngine;using UnityEditor;using System.Collections;[CustomEditor(typeof(NPC))]public class NPCEditor : Editor {//声明脚本对象private SerializedObject npc;//声明属性值private SerializedProperty mynpc;private static bool folds = false;private NPC Target{get{return (NPC)target;}}//ui显示处理,加减数组随想数量的处理private static GUIContentinsertContent = new GUIContent("+", "duplicate this npc"),deleteContent = new GUIContent("-", "delete this npc");//限定按钮的宽度private static GUILayoutOptionbuttonWidth = GUILayout.MaxWidth(20f);void OnEnable(){//给脚本对像和属性赋值npc=new SerializedObject(target);mynpc=npc.FindProperty("mynpc");}public override void OnInspectorGUI(){npc.Update();EditorGUILayout.Space();GUI.changed = false;// 创建NPCfolds = EditorGUILayout.BeginToggleGroup("创建NPC", folds);if (folds){EditorGUILayout.Space();//确保对象数量为0时可以添加。if(GUILayout.Button(insertContent, EditorStyles.miniButtonLeft, buttonWidth)){mynpc.arraySize=1;}//根据对象数组的长度,循环新建npcfor(int i=0;i<mynpc.arraySize;i++){SerializedProperty npc_s=mynpc.GetArrayElementAtIndex(i);EditorGUILayout.BeginVertical();EditorGUILayout.PropertyField(npc_s.FindPropertyRelative("id"));EditorGUILayout.PropertyField(npc_s.FindPropertyRelative("name"));EditorGUILayout.PropertyField(npc_s.FindPropertyRelative("pos_x"));EditorGUILayout.PropertyField(npc_s.FindPropertyRelative("pos_y"));EditorGUILayout.BeginHorizontal();//增加if(GUILayout.Button(insertContent, EditorStyles.miniButtonLeft, buttonWidth)){mynpc.InsertArrayElementAtIndex(i);}//减少if(GUILayout.Button(deleteContent, EditorStyles.miniButtonRight, buttonWidth)){mynpc.DeleteArrayElementAtIndex(i);}EditorGUILayout.EndHorizontal();EditorGUILayout.EndVertical();}if (GUILayout.Button("Update")){//这里可以写处理数据的脚本}npc.ApplyModifiedProperties();}EditorGUILayout.EndToggleGroup();}}4.在场景中新建一个空对象,并挂上NPC脚本,如图4-1:
0 0
- unity编辑器对对象属性的编辑
- struts对对象属性的监听
- 对对象的某些属性进行排序
- java List对对象的属性排序
- Spring对对象属性的校验
- 对对象的理解
- KVC中对对象的属性赋值的顺序
- 对对象按对象的某个属性进行排序
- apache或hibernate对对象属性的合并
- 根据List里面的对象属性对对象排序
- STL对对象的排序
- Hibernate对对象的管理
- JavaScript的prototype对对象
- Redis对对象的操作
- Spring对对象的维护
- 对对象的简单操作
- C#读取对象实例的值和对对象的属性自动赋值方法
- vue的观察者,不会对对象的属性进行冒泡监听
- Product
- POJ 1111----F - 广搜 基础
- 栈和队列常见题型(java版)
- DirectUI界面编程(五)WindowImplBase的使用
- 牛腩新闻发布系统(7)——总结
- unity编辑器对对象属性的编辑
- mysql的alter table 命令
- MediaElement教程
- MyEclipse快捷键大全
- 通过setSystemUiVisibility实现状态栏跟Activity之间的位置关系
- ACM 贪心 STL multiset 二分查找 hdu4268
- 数据结构与算法学习目录
- jquery表单验证插件
- CodeForces 139A Petr and Book 看书