Unity编辑器扩展】的更多相关文章

Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 unity unity Editor ScirptableObject  Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 OverView API ScriptableObject是unity中的一种特别的类型,它不需要挂在场景中的对象上.它可以视作asset资源一样,存储在项目文件中.在一些特殊的情况下要比JSON,XML及TXT方式来存储持久化数据要受益…
Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的.今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本. Tips:1.官方API 2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求 EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法…
unity 编辑器扩展简单入门 通过使用编辑器扩展,我们可以对一些机械的操作实现自动化,而不用使用额外的环境,将工具与开发环境融为一体:并且,编辑器扩展也提供GUI库,来实现可视化操作:编辑器扩展甚至也可以"补充"IDE缺失的一些内容,让IDE更加人性化. 主要内容 MenuItem无界面操作 窗口 优化内置操作 简单工具窗口 Gizmos改造场景显示 一.MenuItem无界面操作 在 assets文件夹下创建Editor文件夹,创建一个新的c#脚本: using System.Co…
学习NGUI插件的时候,突然间有一个问题为什么它这些属性可以通过弹出窗口来选中呢? 而我自己写的组件只能使用手动拖放的方式=.=. Unity开发了组件Inspector视图扩展API,如果我们要写插件方便别人来使用,使用编辑器扩展API让我们的组件显示的更华丽,使用方便 Texture弹出选择框选中图片赋值: 1个组件对应1个Edit扩展器,继承Editor必须让入Editor文件夹下 MyComponent: using UnityEngine; using System.Collectio…
自定义检视面板的使用: 先是定义一个脚本文件,我们来修饰它的检视面板: [HelpURL("http://www.baidu.com")] public class Atr : MonoBehaviour { public int id; public string Name; [Multiline()] public string BackStory; public float health; public float damage; public float weaponDamag…
http://blog.csdn.net/akof1314/article/details/38129031 假设有一个敌人生成器类,其中有个属性range用来表示敌人生成的范围区域大小,那么可以用OnDrawGizmos函数来绘制它在场景视图所代表的区域大小,便于开发调试.这个敌人生成器类,类似如下: 12345678910111213141516171819   using UnityEngine;using System.Collections; public class EnemySpa…
在开发中有可能需要自己开发编辑器工具,在Unity中界面扩展常见两种情况,拿某插件为例: 1,自建窗口扩展 2,脚本Inspector显示扩展 不管使用那种样式,都需要经常用到两个类EditorGUILayout,GUILayout这个两个脚本基本涵盖了所有的界面所需样式以及排版接口. 针对这两种样式分别写了简单介绍:自建窗口扩展,脚本Inspector显示扩展…
二. 使用Gizoms绘制网格及矩阵转换使用 1. 创建Leve类,作为场景控制类: using UnityEngine; //使用namespace方便脚本管理 namespace RunAndJump { //使用部分类partial将类依据不同的功能分布到各个文件中,便于功能区分个管理 public partial class Level : MonoBehaviour { [SerializeField] ; [SerializeField] ; [SerializeField] pri…
扩展编辑器实际上就是在unity菜单栏中添加一些按钮,可以一键执行一些重复性的工作. 一.添加按钮 1.简单使用MenuItem特性 using UnityEngine; using UnityEditor; public class Tools { [MenuItem("Tools/test")] static void Test() { Debug.Log("test"); } } 2.路径设置 在方法上添加MenuItem特性,在MenuItem的括号中传入路…
这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using UnityEditor; public class MyEditor : EditorWindow { [MenuItem("GameObject/window")] static void AddWindow() { Rect wr = , , , ); MyEditor window =…
本文转自http://catlikecoding.com/unity/tutorials/editor/custom-list/ Custom List, displaying data your way In this Unity C# tutorial you will create a custom visualization for arrays and lists in the editor. You will learn to create a custom editor use S…
一.Create Custom Inspector 重绘inspector面板一方面是我们的挂在脚本的窗口变得友好,另一方面可以让其变得更强大,比如添加一些有效性验证. 二.重要说明 1.EditorUtility.SetDirty(object target):该方法可以表明target对象为dirty((⊙﹏⊙)b,怎么翻译合适?)的,unity会将有dirty标记的已经改变的对象在磁盘中存储,可以用来对一些修改数据的强制刷新,这里用来立即绘制GUI(我们对GUI的修改不会立即生效,只有鼠标…
代码: [MenuItem("Tools/Test",false,1)]    static void Test()    {        Debug.Log("test");      } 注意:MenuItem中第一个参数:需要创建选项在工具栏中的路径,此路径的父目录可以是Unity中已存在的,也可以自己直接同子目录一起创建,例如创建“MyApp/FPS”路径. MenuItem中第二个参数:用于菜单项是否启用,后面会详细介绍. MenuItem中第三个参数:…
https://www.xuanyusong.com/archives/category/unity/unity3deditor 1 using UnityEngine; public class Test : MonoBehaviour { public Rect rect; public Texture texture; } using UnityEngine; using UnityEditor; [CustomEditor(typeof(Test))] public class MyEd…
RequireComponent的使用: 当你添加的一个用了RequireComponent组件的脚本,需要的组件将会自动被添加到game object(游戏物体).这个可以有效的避免组装错误.举个例子一个脚本可能需要刚体总是被添加在相同的game object(游戏物体)上.用RequireComponent属性的话,这个过程将被自动完成,因此你可以永远不会犯组装错误. 用法:在新建的类前面加 [RequireComponent(typeof(Rigidbody))] 如图:使用前 AddCo…
代码: using UnityEngine;using UnityEditor; public class MyWidow : EditorWindow{    [MenuItem("Window/Show MyWindow")]    static void ShowMyWindow()    {        MyWidow myWindow = EditorWindow.GetWindow<MyWidow>();//创建自定义窗口        myWindow.Sh…
代码: using UnityEditor;using UnityEngine; public class ChangeValue : ScriptableWizard {                              public int health = 10;    public int speed = 23;       [MenuItem("Tools/CreateWizard")]    static void CreateWizard()    {      …
代码: [MenuItem("Tools/Delete ", true, 1)]    static bool DeleteVadidate()    {        if (Selection.gameObjects.Length > 0) return true;        else return false;    }    [MenuItem("Tools/Delete %d",false,1)]    static void Delete() …
代码: [MenuItem("Tools/Delete",false,1)]    static void Delete()    {        GameObject[] go = Selection.gameObjects;        foreach (GameObject g in go)        {            //GameObject.DestroyImmediate(g);            Undo.DestroyObjectImmediate(…
代码: [MenuItem("Tools/GetChance", false, 1)]    static void GetChance()    {        if (Selection.gameObjects.Length > 0)        {            Debug.Log(Selection.activeGameObject.name);              Debug.Log(Selection.gameObjects.Length);    …