Unity编辑器 - Rigidbody动力学Bake到AnimationClip Unity文档移动平台优化部分提到Physics对CPU的消耗较大 将动力学的特效如破碎等Bake成动画也是优化性能的手段之一,在Unity中可以很方便的将刚体动力学录制成AnimationClip. using UnityEditor.Experimental.Animations; using UnityEngine; using UnityEditor; public class TransformAnim…
编辑器控制特效播放 Unity的动画编辑器不能预览粒子系统的播放,为了方便预览特效,设想制作一个预览特效的工具,通常一个特效有三种组件: - Animation - Animator - ParticleSystem 其中Unity编辑器在编辑器模式下会控制粒子的播放,所以这里控制特效播放的功能只能在播放模式下使用. 代码 using UnityEngine; using UnityEditor; using System; public class EffctPlayBackWin : Edi…
unity 编辑器扩展简单入门 通过使用编辑器扩展,我们可以对一些机械的操作实现自动化,而不用使用额外的环境,将工具与开发环境融为一体:并且,编辑器扩展也提供GUI库,来实现可视化操作:编辑器扩展甚至也可以"补充"IDE缺失的一些内容,让IDE更加人性化. 主要内容 MenuItem无界面操作 窗口 优化内置操作 简单工具窗口 Gizmos改造场景显示 一.MenuItem无界面操作 在 assets文件夹下创建Editor文件夹,创建一个新的c#脚本: using System.Co…
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…
一.简介 最近马三为公司开发了一款触发器编辑器,对于这个编辑器策划所要求的质量很高,是模仿暴雪的那个触发器编辑器来做的,而且之后这款编辑器要作为公司内部的一个通用工具链使用.其实,在这款触发器编辑器之前,已经有一款用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 来做条件编译的代码块. 另一种常见用法是,例如在编辑器下运行时输出日志,而在打包真机调试…
Unity编辑器功能丰富易上手,其实编辑器提供的大多数菜单操作,在代码里面都是能够找到对应接口的,但是这些接口都没有对我们开放,怎么办? 很简单,直接使用反射调用即可. 首先使用Reflector或ILSpy将UnityEditor和UnityEngine进行反编译(有源码的可以直接查看源码更好),然后在里面找你需要的功能即可,unity的底层代码命名是非常规范的,多数功能都能直观的找到: 下图中是Hierarchy视图中一些操作函数,怎么样,是不是很直观: 怎么调用这些函数呢,下面展示了sta…