在进行编辑器扩展时,创建组件的方法一般都会提供GUIStyle参数,可以让我们自定义样式.修改背景图,字体大小,颜色等等. 比如,创建Button组件的方法:public static bool Button(string text, GUIStyle style, params GUILayoutOption[] options); 创建时可以传递一个GUIStyle参数来自定义样式. 在GUI.skin.customStyles数组中,unity定义了很多自带的样式.有的需求可以直接在这些样…
分类:Unity.C#.VS2015 创建日期:2016-03-26 一.简介 本节要点:了解Unity编辑器的菜单和视图界面,以及最基本的操作,这是入门的最基础部分,必须掌握. 二.启动界面 双击桌面上的快捷键,它就会自动启动Unity. 1.Getting started选项卡 启动Unity以后,在开始学习Unity之前,最好先播放一下"Getting started"选项卡中的视频介绍,了解有哪些可用的参考源和资料.该视频播放截图如下: 2.Project选项卡 如果你原来对U…
Unity的编辑器可以通过写脚本进行界面定制,包括添加功能菜单,今天写游戏Demo用到了记录一下. 为Unity添加子菜单 示例程序 [AddComponentMenu("Defend Homeland/GridNode")] public class GridNode : MonoBehaviour { ...... } 子菜单预览 相应地在Unity的Component菜单下就会有我添加的脚本 在编辑器中执行函数 示例代码 //构建地图 [ContextMenu("Bui…
最近在做一个模型展示的项目,我的想法是根据滑动屏幕的x方向差值和Y方向的差值,来根据世界坐标下的X轴和Y轴进行旋转,但是实习时候总是有一些卡顿.在观察unity编辑器下的旋转之后,发现编辑器下的旋转非常流畅.仔细观察之后发现unity编辑器下的旋转运算模式如下图所示,红色箭头方向为触控滑动方向,黑色箭头为模型旋转的轴. 了解原理之后就是实现相关功能,具体实现还是粘代码吧.代码如下 using System.Collections; using System.Collections.Generic…
Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种变化过程要经历无数中间步骤,调用N多次Update,如果直接在Update中不断刷新,界面很容易直接卡死.所以在一个协程中进行一些优化,只保留用户最后一次参数修正,省去中间步骤,就会好很多.这属于Unity编辑器的内容,也属于优化的内容,还是放在优化中吧. 解决问题思路 Unity官网的questi…
我们项目AssetBundle打包走的是全自动化流程,打包之前要进行各种资源检测,如果检测顺利通过,则进入打包,否则提示错误资源名称及路径,打包中断!有时候即使资源检测通过也会打包崩溃,初步断定是Unity的内存爆了,因为Unity在编辑器下打开工程中的资源不会释放掉,所以内存一直在占用,打包时要进行一系列资源依赖分析,我们也知道,如果资源量非常大时候,Unity要保存资源依赖的堆栈,所以会有内存崩掉的风险,所以我就想着,打包之前重启下Unity,让Unity释放掉一些没用的内存.完成这个工作,…
在开发中有可能需要自己开发编辑器工具,在Unity中界面扩展常见两种情况,拿某插件为例: 1,自建窗口扩展 2,脚本Inspector显示扩展 不管使用那种样式,都需要经常用到两个类EditorGUILayout,GUILayout这个两个脚本基本涵盖了所有的界面所需样式以及排版接口. 针对这两种样式分别写了简单介绍:自建窗口扩展,脚本Inspector显示扩展…
一.简介 最近马三为公司开发了一款触发器编辑器,对于这个编辑器策划所要求的质量很高,是模仿暴雪的那个触发器编辑器来做的,而且之后这款编辑器要作为公司内部的一个通用工具链使用.其实,在这款触发器编辑器之前,已经有一款用WinForm开发的1.0版触发器编辑器了,不过由于界面不太友好.操作繁琐以及学习使用成本较高,所以也饱受策划们的吐槽.而新研发的这款编辑器是直接嵌入在Unity中,作为Unity的拓展编辑器来使用的.当然在开发中,马三也遇到了种种的问题,不过还好,在同事的帮助下都一一解决了.本篇博…
通过GUIStyle,可以自定义Unity编辑器的样式. GUIStyle可以new一个全新的实例,这样,需要自己处理所有自己需要的效果. GUIStyle还可以基于已经存在的实例new一个新的实例,这样,只需对原有的效果中不符合自己需求的进行修改. 就像这样: GUIStyle textStyle = new GUIStyle("HeaderLabel");textStyle.fontSize = 20; 一个基于 HeaderLabel  的字体显示风格,然后把字号放大成20: 然…
概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Unity Editor编辑器中添加. 为什么要用条件编译 Unity中最常见的使用条件编译的情况就是分平台编译不同的代码片段.由于Unity是跨平台的,不同平台有不同的特性,我们经常能见到 #if...#endif 来做条件编译的代码块. 另一种常见用法是,例如在编辑器下运行时输出日志,而在打包真机调试…