Unity编辑器
文章平均质量分 68
星际行走
这个作者很懒,什么都没留下…
展开
-
特性Attribute
本文只提及常用的特性,更多特性请查看官方文档。使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。使用此属性可以更好地组织 Component 菜单,从而改进添加脚本时的工作流程。原创 2023-08-04 15:08:38 · 374 阅读 · 0 评论 -
自定义特性,PropertyAttribute 与 PropertyDrawer
/ 自定义 Serializable 类可以使用自定义属性绘制器来更改 Inspector 中 Ingredient 类的每个外观。比较不带有和带有自定义属性绘制器的 Inspector 中 Ingredient 属性的外观:不带有(左)和带有(右)自定义属性绘制器的 Inspector 中的类。可以使用属性将属性绘制器附加到 Serializable 类,然后传入属性绘制器所针对的 Serializable 类的类型。// 在给定的矩形内绘制属性。转载 2023-10-20 15:53:50 · 210 阅读 · 0 评论 -
加载资源:Assets,Resources,AssetsBundle(在线更新)
1、Assets(在编辑器环境加载)2、Resources(游戏运行时加载)3、AssetsBundle(在线更新)ResourcesResources类只能读取名为“Resources”的文件夹里的资源,注意是复数形式。Resources文件夹需要用户自己新建,建议创建并放在Asset文件夹的根目录下。Unity打包发布时,Resources文件夹里的资源转载 2018-01-11 15:45:51 · 3086 阅读 · 0 评论 -
Prefab和GameObject的正向和逆向查找引用
正向在Hierarch视图中选择一个prefab,然后在右侧Inspector视图中点击Select会自动找到Project视图中的Prefab对象。那么反向如何从Project视图中找到Hierarchy视图中引用的Prefab呢?如下图所示,Unity3d做了一个功能,在Project视图中选择一个Prefab,然后右键选择Find References In Scene ,那么此时Unity会自动帮你在当前场景中找到Hierarchy视图中引用这个Prefab的GameObject。.转载 2021-11-24 11:10:37 · 732 阅读 · 0 评论 -
脚本自动选择Hierarchy或Project下的对象
今天有个朋友问我怎么样自动显示某个对象的Inspector面板? Unity是当鼠标在Hierarchy或者Project视图中选择一个或者多个Object,然后在右侧Inspector面板上就会显示所有属性。那么其实解决这个问题的方法就是使用脚本去选择一个Object就行。代码如下 [MenuItem("GameObject/AutoSelect",false,11)] static void Start () { GameObject go = GameObject.Fin转载 2021-11-25 11:41:15 · 364 阅读 · 0 评论 -
(二十七)[System.Serializable]数组List对象添加默认值
[System.Serializable]对象放在数组中,默认在Inspector面板上Array的数量是0,如果在这里修改数量,新加的元素在Inspector面板上它是没有默认值的。比如:我有一个很轻量级的控件,代码中需要序列化List数据,没必要在写个类OnInspectorGUI中自定义绘制它。使用者会在Inspector面板中决定序列化的数量,可是使用者并不知道要填写什么样的值进去, 如果int都是默认值是0 bool默认值是false 可能下面就会有问题。再具体举个例子,比如我需要序列化一转载 2021-11-25 10:29:03 · 902 阅读 · 0 评论 -
(二十四)不影响原有布局拓展Inspector——如RectTransform
今天无意间发现了一篇好文章,也让我解决了一个很久都没解决的难题。问题是这样的,假如我想去拓展Unity自带的inspector但是并不想影响原有布局。 比如下面这段代码: [CustomEditor(typeof(RectTransform))]public class MyTest : Editor { public override void OnInspectorGUI () { base.OnInspectorGUI (); if(GUILayout.Button("Addi转载 2021-11-25 10:25:34 · 278 阅读 · 0 评论 -
(二十三)脚本设置ToolBar
Unity版本5.3.2如下图所示,ToolBar就是Unity顶部的那一横条。这里的所有按钮一般情况下都得我们手动的用鼠标去点击。这篇文章我们说说如果自动操作它们1.自动点击左边四个按钮 (拖动、坐标、旋转、缩放、矩形) [MenuItem("ToolBar/Tools")] static void ToolsMethod() { if(Tools.current == Tool.View) Tools.current = Tool.Move; else if(.转载 2021-11-25 10:21:01 · 198 阅读 · 0 评论 -
(二十一)Editor的GUI的事件拦截
OnGUI是Unity上一个时代的UI系统,而现在运行时的UI系统已经被UGUI取代,但是Editor的UI还是在用老的这一套GUI系统。比如unity编辑器里的所有窗口,布局,按钮,拖动条、滚动等等都是用GUI来写的。GUI提供了一套Event事件系统,虽然不能模拟它的事件(其实是可以发的EditorWindow.SendEvent),但是确可以进行拦截。比如说:1.限制Hierarchy视图的树状结构。(让某些对象不可随意移动层次结构)2.限制Project里的资源不能任意拖动(限制美术..转载 2021-11-25 10:14:40 · 287 阅读 · 0 评论 -
(十六)创建Lua脚本模板
Unity里能创建 c#脚本模板,但是如果我想创建Lua脚本模板怎么办呢?拓展一下编辑器吧。设置一下Lua脚本的模板地址 : Assets/Editor/Lua/Template/lua.lua using UnityEngine;using UnityEditor;using System;using System.IO;using System.Text;using UnityEditor.ProjectWindowCallback;using System.Text.Regu.转载 2021-11-25 10:11:13 · 799 阅读 · 0 评论 -
(十四)脚本生成Preset Libraries
Preset Libraries它干的事就是把若干个颜色值保存起来。我们都知道颜色值用rgba来保存的。这样拷贝起来就很麻烦了,如果说我把每个界面的颜色都做成模板,需要设置颜色的时候在模板里选择多好?unity提供了Preset Libraries 就可以达到这个需求。http://docs.unity3d.com/Manual/PresetLibraries.html。但是问题来了,这东西不能通过脚本来自动化完成,总不能手动的一个一个设置吧。。。我想做的就是用脚本来创建Preset Librarie.转载 2021-11-25 10:08:00 · 158 阅读 · 0 评论 -
(九)独立Inspector属性——如限制属性值范围
Unity提供了强大的Editor功能, 我们可以很轻易的在EditorGUI中绘制任意的属性。比如我之前写的文章http://www.xuanyusong.com/archives/2202那么问题就来了,如果我有多属性想共用同一段自定义控件,那么这种方法我就需要在多份代码里绘制控件了OnInspectorGUI 这一节中我们需要用到两个全新的自定义属性PropertyAttribute和PropertyDrawer。 可以理解为一个是数据,一个是渲染。数据代码: using Unit..转载 2021-11-24 14:36:25 · 737 阅读 · 0 评论 -
(六)自动计算所有子对象包围盒
如下图所示,拖入不同的mesh在一个节点下面,自动生成一个BoxCollider包围盒。这个功能可以方便关卡策划,不然手动设置BoxCollider太蛋疼了。。先选择一个父节点,然后执行下面脚本。。 或者也可以根据需求在关卡编辑器上做成自动的。。 [MenuItem ("MyMenu/Do Test")] static void Test () { Transform parent = Selection.activeGameObject.transform; Vecto.转载 2021-11-24 14:33:39 · 500 阅读 · 0 评论 -
(五)拓展系统自带组件的Inspector视图
今天无意间听同事说的一个新方法,可以拓展系统自带组件的Inspector。我试了一下果然有效算是学习了, 在博客里面记录一下,方便以后查阅。 using UnityEngine;using System.Collections;using UnityEditor; public class CameraExtension : Editor { public override void OnInspectorGUI(){ base.DrawDefaultInspector();转载 2021-11-24 14:31:12 · 191 阅读 · 0 评论 -
(三)拓展Scene视图
Scene视图是编辑游戏模型的地方,其实它还可以进行编辑。如下图所示,我给Scene视图做了简单的编辑。Scene视图的拓展是基于对象的,意思就是你必须在Hierarchy视图中选择一个对象才行。Hierarchy视图中选择不同的对象可以有不同的Scene视图。图中我们创建了一个立方体对象,接着给它绑定一个脚本。Test.cs 是个空空的脚本。 using UnityEngine;using System.Collections; public class Test : M..转载 2021-11-24 14:27:21 · 155 阅读 · 0 评论 -
(二)拓展自定义编辑器窗口
Unity支持自行创建窗口,也支持自定义窗口布局。在Project视图中创建一个Editor文件夹,在文件夹中在创建一条脚本。自定义窗口需要让脚本继承EditorWindow在设置MenuItem,此时在Unity导航菜单栏中GameObjec->window就可创建一个自定义窗口。 using UnityEngine;using UnityEditor;public class MyEditor : EditorWindow { [MenuItem ("GameObje转载 2021-11-24 14:22:20 · 290 阅读 · 0 评论 -
(一)开始学习拓展编辑器
nity拥有非常丰富的拓展编辑器接口,如果是在网上下载过别人写的插件,你会发现为什么它的监测面板视图和普通的不一样?其实是他通过代码自己绘制的监测面板,这篇博文MOMO带大家来学习编辑器。如下图所示,这是我通过代码拓展的面板视图。下一条简单的脚本,绑定挂在摄像机上。using UnityEngine;using System.Collections; public class Test : MonoBehaviour{ public Rect mRectValue ; pu.转载 2021-11-24 14:17:03 · 119 阅读 · 0 评论 -
多余的MeshCollider和Animation组件
如果你是在做手游项目,我强烈建立不要做碰撞,有关一切物理的东西Unity对手机支持的并不好,如果不信你可以试试效率你就知道。美术兄弟,每次给过来的场景,都会带上MeshCollider 和Animation 空的组件。这俩东西很占效率的,不信你可以用Profiler 看看。如果你让美工们上传场景的时候手动检查一下,把MeshCollider和Animation空的组件都删掉,我可以很负责的告诉你,他们肯定会忘删除或者错删。。。比如下图这样的组件。还有场景的材质最好用Mobile/Diffuse.转载 2021-11-24 11:41:07 · 154 阅读 · 0 评论 -
编辑器之不实例化Prefab获取删除更新组件
使用 GetComponentsInChildren<>(true) 可以直接把Project视图里的子对象找出来!!!!return;代码是这样的 [MenuItem("Assets/Delete")] static void delete () { GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/GameObject.prefab"); //删除Mesh转载 2021-11-24 11:48:14 · 325 阅读 · 0 评论