unity

Unity编辑器扩展-菜单项

雨燕双飞 提交于 2019-12-03 15:07:42
[TOC] Unity编辑器允许你去添加像内置菜单一样外观和行为的自定义菜单。自定义菜单对于那些经常使用的功能提供一种能从编辑器直接访问的便捷方式。在这一课程中我将对每个描述的主题提供真实的使用示例,用于说明在unity中的菜单项是如何创建和使用的。 添加菜单项 为了要在顶层工具栏中创建一个新的菜单项,你必须去创建一个编辑器脚本(在项目Editor目录下的一个脚本)。此菜单项需要是一个静态的方法且必须使用MenuItem属性来标识。例如,去添加一个你的团队和公司经常使用的命令到“Tools”菜单。 下面的示例,在Tools菜单下添加了一个“Clear PlayerPrefs”选项: using UnityEngine; using UnityEditor; public class MenuItems { [MenuItem( "Tools/ClearPlayerPrefs" )] private static void NewMenuOption () { PlayerPrefs.DeleteAll(); } } 这段代码创建了一个叫“Tools”的菜单,并在下面放置了一个叫“Clear PlayerPrefs”的菜单项。 当然我们也可以在一个现成的菜单项下面创建新的菜单项(例如:在“Windows”菜单下),也可以创建多级子菜单便于更好的组织菜单项目: using

Unity3d UnityEditor EditorWindow 自定义窗体控件

半世苍凉 提交于 2019-12-03 15:07:01
功能:是因为公司的模型组需要一个插件,在MAYA中有很多个复制物体,导出的时候只导出一个,其他相同的物体只导出点的位置信息。这样进入Unity里就是一个物体和N个相同物体的位置点,代码简单但是需要用插件形式,正好没研究过这方面,所以研究下Unity的插件编写。 网上的资料:http://blog.csdn.net/jjiss318/article/details/7435708 根据这篇文章,我做了个简易插件。大概思路是首先将所有带有位置信息的空物体在一个Tag下面获得,然后便利他们在他们的位置下实例化预制体。 首先建立个脚本DuplicatePrefabs。 注意要先添加UnityEditor;引用,以及继承EditorWindow 定义两个变量,一个Transform存储预制体,一个字符串存储Tag的名字 using System; using UnityEngine; using UnityEditor; public class DuplicatePrefabs : EditorWindow { public Transform PrefabObj; public string TagName="Locator"; private GameObject[] objs; //设置插件在菜单栏的位置 和快捷键 [MenuItem("Window/DuplicatePrefabs

Unity创建自定义窗口

淺唱寂寞╮ 提交于 2019-12-03 15:05:07
Unity支持自行创建窗口,也支持自定义窗口布局。在Project视图中创建一个Editor文件夹,在文件夹中在创建一条脚本。 自定义窗口需要让脚本继承EditorWindow在设置MenuItem,此时在Unity导航菜单栏中GameObjec->window就可创建一个自定义窗口。 using UnityEngine; using UnityEditor; public class MyEditor : EditorWindow { [MenuItem ( "GameObject/window" )] static void AddWindow ( ) { //创建窗口 Rect wr = new Rect ( 0 , 0 , 500 , 500 ); MyEditor window = (MyEditor)EditorWindow.GetWindowWithRect ( typeof (MyEditor),wr, true , "widow name" ); window.Show(); } } EditorWindow.GetWindowWithRect() 和 EditorWindow.GetWindow()都可以创建一个窗口。前者可以规定窗口的区域,后者可通过鼠标动态的延伸窗口。参数1表示窗口的对象,参数2表示窗口的区域

【Unity】Unity 5 Statistics 窗口

家住魔仙堡 提交于 2019-12-03 15:04:53
Unity5的 Statistics上的统计信息和Unity4 有一些区别, Statistics窗口,全称叫做 Rendering Statistics Window ,即渲染统计窗口(或渲染数据统计窗口),窗口中罗列出关于渲染、声音、网络状况等多种统计信息 ,下面详细的解释一下这些项的意义。 FPS FPS(Time per frame andFPS) :frames per seconds表示引擎处理和渲染一个游戏帧所花费的时间,该数字主要受到场景中渲染物体数量和 GPU性能的影响,FPS数值越高,游戏场景的动画显示会更加平滑和流畅。一般来说,超过30FPS的画面人眼不会感觉到卡,由于视觉残留的特性,光在视网膜上停止总用后人眼还会保持1/24秒左右的时间,因此游戏画面每秒帧数至少要保证在30以上。 另外,Unity中的FPS数值仅包括此游戏Scene里更新和渲染的帧,编辑器中绘制的Scene和其它监视窗口的进程不包括在内。 CPU CPU: 获取到当前占用CPU进行计算的时间绝对值,或时间点,如果Unity主进程处于挂断或休眠状态时,CPU time将会保持不变。 Render thread Render thread: GPU渲染线程处理图像所花费的时间,具体数值由GPU性能来决定 Batches Batches: 即Batched Draw Calls

Unity窗口的管理

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 15:04:26
一般我的做法是 一个窗口身上挂一个类,那么这个类主要负责管理该窗口上所有的UI,那么这个类既然能管理子控件,那么肯定是已经得到了子控件 两种方法获取 子控件 1 在脚本中 public 定义一些变量 然后拖动赋值 2 通过Find查找方式 但是,有时候你会发现别人这样写,找到场景对象后,进行一层封装 using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Reflection; using System; public class xuhaitaoWindow : MonoBehaviour { public class myButtonGroup { public Button Button01; public Button Button02; public Button Button03; } public class myTextGroup { public Text Text01; public Text Text02; public Text Text03; public Text Text04; } private myButtonGroup btnGroup= new myButtonGroup(); private myTextGroup txtGroup =

Unity编辑器篇(一)Scene界面

可紊 提交于 2019-12-03 15:04:13
(一),向屏幕中心发射一条射线 lastActiveSceneView 类似于 Game场景的相机,(其实我也没搞懂是什么东西) Ray ray = SceneView.lastActiveSceneView.camera.ScreenPointToRay(new Vector3(SceneView.lastActiveSceneView.camera.pixelWidth / 2, SceneView.lastActiveSceneView.camera.pixelHeight / 2, 0)); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { Debug.Log("发射射线成功"); } (二)Scene场景刷新回调事件 static void Init() { SceneView.onSceneGUIDelegate += OnSceneGUI; } static void OnSceneGUI(SceneView sceneView) { 每帧调用,里面可以做一下在scene界面操作的回调 ,如鼠标键盘事件 Event e = Event.current; if (e.type == EventType.MouseDown) { Debug.Log("鼠标按下"); } } (三)Layer层控制

代码获取Unity编辑器中的窗口

血红的双手。 提交于 2019-12-03 15:03:53
获取Unity编辑器中的窗口 这段时间在做编辑器相关内容,有时候需要对Unity自带的窗口做一些操作,这里就需要用代码反射EditorWindow程序集下的类型获取到窗口 代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System; using System.Linq; public class ShowAllEditorWindow : EditorWindow { static List<Type> windowTypes = new List<Type>(); static List<Type> timelineTypes = new List<Type>(); [MenuItem("Tools/ShowAllWindow")] static void ShowWindow() { ShowAllEditorWindow window = EditorWindow.GetWindow<ShowAllEditorWindow>("AllEditorWindow"); Type[] types = typeof(EditorWindow).Assembly.GetTypes(); windowTypes =

Unity Editor 编辑器扩展 十一 Inspector可排序列表

你离开我真会死。 提交于 2019-12-03 15:03:31
目录 可排序列表简单使用 可排序列表复杂使用 可排序列表简单使用 创建如下脚本并挂载到物体上: using UnityEngine; using System.Collections; public class Example1 : MonoBehaviour { [SerializeField] string [] texts; } 在Editor中创建如下脚本: using UnityEngine; using UnityEditor; using UnityEditorInternal; [CustomEditor ( typeof (Example1))] public class ExampleInspector : Editor { ReorderableList reorderableList; void OnEnable () { reorderableList = new ReorderableList (serializedObject, serializedObject.FindProperty ( "texts" )); // 绘制元素 var prop = serializedObject.FindProperty ( "texts" ); reorderableList = new ReorderableList (serializedObject,

unity 在Inspector面板上面显示类

落爺英雄遲暮 提交于 2019-12-03 15:02:54
需要用到一行代码 [System.Serializable] 这行代码在unity中简单理解起来就是:把对象 序列化 ,写入文件中,使得变量可以被Inspector界面获得。 可序列化的对象有很多: 枚举,类,结构,委托 等等, 但除了 字典 至于为什么不能序列化字典显示到inspector界面 我没具体了解过, 有兴趣的童鞋可以自行去找找答案 下面贴一个显示类的实例: [System.Serializable] public class PointPos { public int x, z; public PointPos(int x, int z) { this.x = x; this.z = z; } } 来源: CSDN 作者: qq_26036981 链接: https://blog.csdn.net/qq_26036981/article/details/85251907

Unity Inspector扩展

拟墨画扇 提交于 2019-12-03 15:00:32
一些函数的使用 网上查了一下,编辑器扩展使用的基本都是EditorGUI和EditorGUILayout(这两个实现的效果区别不大,根据Unity手册解释说明后者是前者的自动布局版本),所以大家可以去查看一下官方手册上,看看有哪些效果,这里只记录一些我用过的它们的效果及基本用法。 基本使用: 一般来说,一个Inspector扩展对应一个脚本,脚本名一般取为“目标脚本名Editor”,而关联两个脚本则通过[CustomEditor]标签来关联,关联后可以通过target属性获取目标对象的属性值 特别注意 Inspector面板的扩展,目前为止哪一种方式都无法保存{get;set;}属性字段。所以基本你别想去修改属性字段。。。因为你即是修改了,它根本不会去保存。。。而且就算使用property的方式也不行,因为你找都找不到。另外Unity原本的绘制方式使采用的Properties的方式在绘制。 常用效果: 下拉菜单: EnumPopup: 效果如上图所示,如果觉得这样的布局不好看可以自己后面布局。 浮点数区域:FloatFiled: 来源: CSDN 作者: 好身亡 链接: https://blog.csdn.net/qq_37421018/article/details/90140983