最近在学习unity编辑器,so,记录总结一下. 以下介绍了一些简单的unity3d检视面板部分的使用技巧. using UnityEngine; using System.Collections; //让你在将这个脚本拖到一个GameObject上的时候,自动添加Camera,Light,Cloth组件 [RequireComponent(typeof(Camera), typeof(Light), typeof(Cloth))] public class MyClass : MonoBeha…
前面已经写了三篇: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 今天写第四篇,扩展自己的自定义组件. 通常我们使用继承自 Editor 的自定义编辑器类,来扩展自己的组件的检视面板和编辑器,并配合 CustomEditor 特性语法,附加该编辑器到一个自定义组件. 首先我们先定义一个组件 Player: using UnityEngine; public class Player :…
Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [System.Serializable] public class TestClass { public Vector3 vec = Vector3.zero; public Color clr = Color.green; } 也可以使用[System.NonSerialized]标记不需要显示的属性,…
前面写了四篇关于编辑器的: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 Unity3D编辑器扩展(四)——扩展自己的组件 今天我们来讲解在编辑器扩展中我们常用的特性(Attribute)以及 Selection 类. 常用特性(Attribute): 1.InitializeOnLoad:监听Unity3D启动事件.需要将该脚本放在Editor文件夹下,Unity3D点击Play按钮…
unity3D Socket与C#server第一次连接时通讯正常.客服端段关闭后.unity3D编辑器再次启动连接 unity3D编辑器马上卡死 原因是Socket处于异步状态,而异步线程是不受Unity管理的. 这样会导致Unity一直与Socketserver保持着握手状态,而再次启动时无法再次于server建立握手. 我的解决方式是,在脚本内启用退出函数OnApplicationQuit().由于我的Socket是写在单例里面 所以我的代码例如以下,道理就是这个道理. void OnAp…
前面我们已经写了5篇关于编辑器的,这是第六篇,也是最后一篇: Unity3D编辑器扩展(一)——定义自己的菜单按钮 Unity3D编辑器扩展(二)——定义自己的窗口 Unity3D编辑器扩展(三)——使用GUI绘制窗口 Unity3D编辑器扩展(四)——扩展自己的组件 Unity3D编辑器扩展(五)——常用特性(Attribute)以及Selection类 一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种.二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作.…
  近期在学习Shader时感觉Shader语言參数众多.语法诡异,假设每次都从头開始写Shader一定是一件痛苦的事情.假设能够在本地定义好一组标准的Shader模板,这样当我们须要实现某些效果相似的Shader时,就能够在这个Shader模板的基础上进行改动. 由于Shader文件是一个文本文件,所以我们能够很easy地创建这样一个模板,在这个模板中我们能够进一步完好相关的參数凝视,这样就不用每次写Shader的时候都须要查文档了,从这个角度出发,就进入了这篇文章的正题:扩展Unity3D编…
之前做了普通对象的可继承的检视面板类, 现在想要实现对Unity自带的检视面板的继承的话, 要怎样写呢? 万变不离其宗,  仍然是围绕UnityEditor.Editor.CreateEditor 这个函数来实现: /// <summary> /// decorate Unity's built-in inspector Editor. /// </summary> public class DecoratorEditor<T> : UnityEditor.Editor…
对于检视面板 Inspector 的面板继承方式对项目来说是很有必要的, 比如一个基类, 写了一个很好看的检视面板[CustomEditor(typeof(XXX))], 可是所有子类的面板无法直接继承这个CustomEditor, 有些人的解决方案是把子类写检视面板的代码独立出来, 然后子类面板直接去调用这些Layout, 非常浪费人力物力. 最近发现有个 DecoratorEditor 脚本, 它实现了对 Unity 自带检视面板的扩展, 看到它实现某个类型的面板Inspector的方法,…
Unity3D 引擎的编辑器拥有很强的扩展性,用的好可以帮我们省很多事情.在这里记录下如何去扩展 Unity3D 的编辑器,定制属于我们自己的开发环境. 本篇主要讲解在 Unity3D 引擎的各个窗口添加我们自己的菜单按钮. 添加菜单按钮我们需要用到 MenuItem 特性: MenuItem 的三个重载: MenuItem(string itemName); MenuItem(string itemName, bool isValidateFunction); MenuItem(string…