编辑器

Unity Editor 编辑器扩展 十 Handle控件

浪子不回头ぞ 提交于 2019-12-03 15:39:54
目录 Handle控件 按钮控制柄窗口 Handle控件 按钮,控制柄,窗口 效果见图: 创建HandleTest.cs脚本,挂载到一个控物体上,然后在Editor文件夹下创建如下脚本: using UnityEngine ; using UnityEditor ; [CustomEditor (typeof(HandleTest))] public class HandleInspector : Editor { int windowID = 1234 ; Rect windowRect ; void OnSceneGUI () { // 1. 物体控制柄 var component = target as HandleTest ; PositionHandle2 (component) ; PositionHandle (component .transform ) ; // 2. 控制按钮 HandleButton () ; // 3. 控制窗口 GUIWindow () ; } void PositionHandle2 (HandleTest component) { var transform = component .transform ; if (Tools .current == Tool .Move ) { transform .rotation =

Unity Editor 编辑器扩展 七 创建脚本模版

我与影子孤独终老i 提交于 2019-12-03 15:39:44
这篇文章介绍一下用编辑器窗口自定义创建脚本模版。 目录 了解模版脚本 深入了解模版创建 了解模版脚本 我们在Unity中创建脚本时会自动创建如下的脚本 在Unity的安装文件中存储了它的模版,我们可以按下列路径查看: Mac /Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates Windows C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates 这里看下Mac下的路径 这就是程序天天要用的模版,我们可以手动修改他,例如删掉那个万年不变的备注,或者添加一个Awake()函数。 深入了解模版创建 以C#脚本模版为例: 81–表示在菜单中的显示顺序; C#Script – 表示在菜单中的显示名称; NewBehaviourScript – 默认文件名; .cs – 文件的格式。 根据上面的信息,我们也可以自己创建新的脚本模版,首先在工程中创建ScriptTemplates文件夹,再创txt文件如下 100-C#MyDefineScript-MyDefineScripts.cs.txt using UnityEngine; using System.Collections; public class #SCRIPTNAME# :

Inspector界面编辑器开发

老子叫甜甜 提交于 2019-12-03 15:37:14
编辑器开发流程 注: 下面使用的是Editor文件夹下的脚本,对外面挂载脚本进行关联。 1. 先引用命名空间UnityEditor 2.需要继承Editor类 3.使用[CustomEditor]特性,与需要扩展开发进行关联 4.利用OnEnable和OnDisable做一些初始化和清理工作 5.需要重写OnInspectorGUI, 该方法是对Inspactor面板进行绘制 即 public override void OnInspectorGUI 6.使用target变量,或取选中的物体身上的脚本获取该脚本的对象 备注: 没有Update声明周期函数 . API : 具体,,我就不那么细了 查手册把 EditorGUILayout.TextField("label", ) 文本框 EditorGUILayout.TextArea("label", ) 带滑动区的文本框,默认显式3行,超过就显示滚动条 EditorGUILayout.IntField("label", ) : 。。。。有int float double EditorGUILayout.Toggle("label", ) :关联 bool 类型 EditorGUILayout.Vector3Field("label", ) :关联vector3类型 EditorGUILayout. ColorField(“

拓展自定义编辑器窗口(EditorGUILayout类)

我的梦境 提交于 2019-12-03 15:31:52
原文地址: http://www.cnblogs.com/caymanlu/p/5722549.html Unity支持自行创建窗口,也支持自定义窗口布局。在Project视图中创建一个Editor文件夹,在文件夹中再创建一条脚本。 自定义窗口需要让脚本继承EditorWindow再设置MenuItem,此时在Unity导航菜单栏中GameObjec->window就可创建一个自定义窗口。 0.窗口: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 using UnityEngine; using UnityEditor; //引入编辑器命名空间 publicclassMyEditor:EditorWindow { [MenuItem( "GameObject/caymanwindow" )] staticvoidAddWindow() { //创建窗口 Rect wr =newRect(0,0,500,500); //另一种方式:myEditor window = (myEditor)EditorWindow.GetWindow(typeof(myEditor), true, "cayman"); MyEditor window =(MyEditor)EditorWindow.GetWindowWithRect( typeof

Markdown 随记

你。 提交于 2019-12-03 15:30:28
编辑器: markdownpad : 支持windows:感觉有点简陋,号称windows平台最好的。 http://www.markdownpad.com/ typora:官网风格不错: https://typora.io/ Typora 同样支持 Windows、OS X 和 Linux,Typora 支持即时渲染技术,这也是与其他 Markdown 编辑器最显著的区别,支持数学编辑,可与 Word 直接格式转换,在 Pandoc 的支持下进行多种文档格式转换,Typora 适合那些对码字手速和排版顺畅度有要求的人群,譬如码农、网站小编等。 ———————————————— 教程 https://www.runoob.com/markdown/md-tutorial.html 我的理解: Markdown感觉更像“快捷” html语法,并通过特殊符号,直接转换为css样式(例如>代表区块),并被编辑器很好的支持用于编辑和导出多种格式。 来源: https://www.cnblogs.com/badprogrammer/p/11802363.html

Unity编辑器 - 自动排版

落爺英雄遲暮 提交于 2019-12-03 15:27:51
Unity编辑器 - 自动排版 使用花括号提高可读性 //一组横向排列的控件 GUILayout .BeginHorizontal () ; { GUILayout .BeginVertical () ; { //横向排列中的第一组竖向控件 } GUILayout .EndVertical () ; GUILayout .BeginVertical () ; { //横向排列中的第二组竖向控件 } GUILayout .EndVertical () ; } GUILayout .EndHorizontal () ; 1 一定要这样写的,不然改的痛不欲生。。 2 把冗长的代码按排版区域拆分成模块 坑爹的GUILayoutUtility.GetRect()和GUILayout.BeginArea() 在组织排版和需要实现交互操作时,需要获取控件的Rect,这时候使用GUILayoutUtility.GetRect()比较方便。 然而这里有两点要特别注意: - 在Event.current.type == EventType.Layout时: GUILayoutUtility.GetRect() = Rect(0, 0, 1, 1); - GUILayoutUtility.GetRect()不能给BeginArea使用,因为GUILayout

Unity可扩展编辑器

Deadly 提交于 2019-12-03 15:26:19
UnityEditor 之 自定义Editor Menu 菜单 菜单栏添加菜单按钮 using UnityEngine; using System.Collections; using UnityEditor; public class Menu : MonoBehaviour { [MenuItem( "ShowDialog/ShowDialog" )] static void showDialog() { EditorUtility.DisplayDialog( "Something Error!" , "This is a new dialog" , "close" ); } } 可扩展编辑器 Texture2D 要可读,改 Texture 属性为 Advance 并在Override 地方的 Format 要设置正确 MyInspector using UnityEngine; using System.Collections; public class MyInspector : MonoBehaviour { public Rect m_rectValue; public Texture2D m_texture; public int m_iCount; public float m_fLength; public string m_strSaveName;

unity编辑器扩展

一曲冷凌霜 提交于 2019-12-03 15:25:41
01:添加自己的工具 以Editor命名的文件夹允许其中的脚本访问Unity Editor的API。如果脚本中使用了在UnityEditor命名空间中的类或方法,它必须被放在名为Editor的文件夹中。Editor文件夹中的脚本不会在build时被包含。 在项目中可以有多个Editor文件夹。 注意:如果在普通的文件夹下,Editor文件夹可以处于目录的任何层级。如果在特殊文件夹下,那Editor文件夹必须是特殊文件夹的直接子目录。 1.必须是放在 Assets / Editor 文件夹下的类,且使用了 using UnityEditor 2.调用的函数必须是静态函数(static) MenuItem菜单项 MenuItem属性允许你添加菜单项到主菜单和检视面板上下文菜单。 (该属性把任意静态函数变为一个菜单命令。仅静态函数能使用这个MenuItem属性。) MenuItem是编辑器类,所以技能导入 using UnityEditor; 命名空间 且一般我们的类也不是集成自MonoBehaviour的,而是集成ScriptableObject using UnityEngine; using UnityEditor; // public class Tools { [MenuItem("Tools/Test")] public static void Test() { Debug

[Unity编辑器] 自定义资源

谁都会走 提交于 2019-12-03 15:25:31
using UnityEngine; using UnityEditor; using System.IO; public class CustomAssets<T> : ScriptableObject { static string configPath = string.Format("Assets/Main/{0}.asset", typeof(T).ToString()); public T m_list; [MenuItem("ArgsList/CreateArgsList")] static void CreateArgsList() { if (!File.Exists(configPath)) CreateAsset(); } public static void CreateAsset() { //将对象实例化 ScriptableObject so = ScriptableObject.CreateInstance(typeof(global::T)); if (so == null) { Debug.Log("该对象无效,无法将对象实例化"); return; } string path = Application.dataPath + "/Main"; //判断该路径是否存在,不存在的话创建一个 if (Directory.Exists(path) ==

Unity3d 编写编辑器自定义插件

亡梦爱人 提交于 2019-12-03 15:25:07
Unity3D的运行时和编辑器类分别存储在不同的Assemblies里:UnityEngine和UnityEditor。由于编辑器插件是独立于游戏之外的,因此需要在assets文件夹下建立Editor目录来存放自定义插件的代码。需要注意的是Editor文件夹是被编辑器智能识别的,可以是其他文件夹的子文件夹,并且可以存在多个,这样就给我们安排文件结构提供了便利。注意游戏中的脚本是不能访问Editor文件夹下的代码的。 准备开始编写编辑器之前,需要using UnityEditor来导入编辑器的名称空间。顺便一说,Editor文件夹下的代码应该也是在这个名称空间里的。 如何开启自定义插件窗口 一般的插件都是需要交互窗口的(也有不需要的),一般写一个静态方法打开插件窗口,并在该静态方法前加上编辑器自定义的几种特性之一,进入的方法有有以下两种: [MenuItem(path)]:告知编译器给Unity3D编辑器添加一个菜单项,并且当点击该菜单项的时候调用该函数。触发函数里可以编写任何合法的代码,可以是一个资源批处理程序,也可以弹出一个编辑器窗口。代码里可以访问到当前选中的内容(通过Selection类),并据此来确定显示视图。 [ContextMenu(“path”)]:可以向你的上下文菜单中添加一个菜单项,点击该菜单项时显示视图。 如何编辑自定义插件窗口 编写自定义的窗口界面