unity

Unity如何编辑C#脚本模板

风格不统一 提交于 2019-12-03 14:03:06
首先找到Unity的安装目录找到名为81-C# Script-NewBehaviourScript.cs的文档: 路径为D:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates,打开文档: 对比下是不是很熟悉呢 在这个文档81-C# Script-NewBehaviourScript.cs里可以编写自己的C#脚本模板: 注意一定要加 注释符号 额 新建Test脚本打开: 来源: CSDN 作者: 奋斗的菇凉 链接: https://blog.csdn.net/qq_40229737/article/details/94896064

【Unity】编辑器小教程

我与影子孤独终老i 提交于 2019-12-03 14:02:41
写在前面 Unity最强大的地方之一是它扩展性非常强的编辑器。Unite Europe 2016上有一个视频专门讲编辑器编程的: https://www.youtube.com/watch?v=9bHzTDIJX_Q 这里大概记录一下里面的关键点。 场景一 关注点 : 绘制重要区域,Gizmos.DrawXXX OnDrawGizmos和OnDrawGizmosSelected回调函数 点击Gizmos按钮就可以在Game视图也看到线框了 // OnDrawGizmos()会在编辑器的Scene视图刷新的时候被调用 // 我们可以在这里绘制一些用于Debug的数据 void OnDrawGizmos() { Gizmos.color = new Color( 1f , 0f , 0f , 1f ); Gizmos.DrawWireCube( transform.position + BoxCollider.center, BoxCollider.size ); Gizmos.color = new Color( 1f , 0f , 0f , 0.3f ); Gizmos.DrawCube( transform.position + BoxCollider.center, BoxCollider.size ); } // OnDrawGizmosSelect(

Unity编辑器扩展-点击Projec视图的图片就赋给当前选中的Image节点

雨燕双飞 提交于 2019-12-03 14:02:15
我所知道的,UGUI给Image赋上图片的方式有二:一是把图片拉去Image的监视器的Source Image处,一是在点其小圆点弹出选择图片的界面。两种方式我都觉得有点麻烦,我想如果我已经选中某Image节点了,这时再点击Project视图的图片时就要给我赋上该图,效果如下: 实现思路: Selection.selectionChanged这个事件是Unity编辑器几个视图选中的东西变更时会触发的,其中Selection.activeObject就是当前选中的资源,可以是图片、prefab、GameObject等,我们可以用个字段存放上次点击的GameObject,当当前选中的是图片资源且上次选中的是带Image组件的GameObject时,就把该图片赋值给该Image组件,代码很不多: public class SceneEditor { static Object LastSelectObj = null;//用来记录上次选中的GameObject,只有它带有Image组件时才把图片赋值给它 static Object CurSelectObj = null; [InitializeOnLoadMethod] static void Init() { Selection.selectionChanged += OnSelectChange; } static void

unity 自动生成脚本

旧街凉风 提交于 2019-12-03 14:01:03
Github: https://github.com/pinzeweifen/CreateScript 码云: https://gitee.com/weifen/CreateScript Unity自动生成UI脚本 项目介绍 无论是手动绑定对象还是代码绑定对象都过于繁琐,所以有了该插件 自动生成UGUI脚本,直接选择查找赋值或生成后从插件绑定对象 ####插件将会生成 5个文件夹: BuildController Controller BuildUI Model UI 5 个文件: [可更改文件] Name_UI .cs Name_Model .cs Name_Controller .cs [更新文件,通常这些文件是不更改的] Name_BuildUI .cs Name_BuildController .cs 使用说明 生成脚本 [生成前必须选中 Hierarchy 面板对象] 更新脚本 [必须是从当前插件创建的脚本才能更新] 复制代码 [复制至剪切板] 挂载脚本 [必须先创建对应的UI文件才能挂在,无论是自己创建还是插件创建都可以] 绑定UI [只有从当前插件创建的UI才能绑定,且必须先把脚本挂载到对象上] 全选变量 [选择生成所有子对象,当对象被折叠时不能被选中] 全取消变量 [取消选择生成所有子对象] 全选属性器 [选择生成所有子对象属性器] 全取消属性器

Unity扩展编辑器--类型3:Custom Editors

扶醉桌前 提交于 2019-12-03 14:00:29
Unity扩展编辑器--类型3:Custom Editors Custom Editors 加速游戏制作过程的关键是为哪些频繁使用的组件创建自定义的编辑器,为了举例,我们将会使用下面这个极其简单的脚本进行讲解,它的作用是始终保持一个对象注视某一点。 public class LookAtPoint : MonoBehaviour { public Vector3 lookAtPoint = Vector3.zero; void Update () { transform.LookAt (lookAtPoint); } } 这个脚本会让一个对象保持面向世界空间中的某一点,让我们做的更酷一点! 第一步是让它在编辑器里面正常工作:即使你没有测试游戏,也能让这个脚本运行。我们对它添加ExecuteInEditMode属性来做这件事。 [ExecuteInEditMode] public class LookAtPoint : MonoBehaviour { public Vector3 lookAtPoint = Vector3.zero; void Update () { transform.LookAt (lookAtPoint); } } 你可以把这个脚本加在main camera上,然后在Scene视图中拖拽相机测试一下。 Making a Custom Editor

「Unity3D」(10)自定义属性面板Inspector详解

心不动则不痛 提交于 2019-12-03 13:58:44
通常情况是不需要扩展属性面板的,也就是Inspector,但如果需要开发定制的工具和插件,那么就需要扩展属性面板来完成需求。本文会对自定义扩展Inspector进行全面的介绍。 工具类和概念的介绍 自定义Inspector有两个层面,第一个是扩展已有属性的功能,第二个是按照意图增加新的面板功能。扩展已有的功能,包括替换显示文字,动态控制可见性,增加动画,错误提示,数据的校验和限制等等。增加新的功能就是按照需求定制更为复杂的功能。 Unity的内置工具类提供了必要的实现基础,主要有EditorGUILayout和EditorGUI两大类。两者有重叠的部分,也有特有的部分。总体上来说,EditorGUILayout是带有自动布局的,EditorGUI需要传入Rect来对控件进行定位。另外,这两者和GUILayout与GUI概念非常类似,只不过GUI的主要绘制是在场景中(运行时,游戏中可见),EditorGUI上在Inspector中(仅在编辑器中)。 自定义流程 一共分为三步: 第一步,继承Editor父类。 第二步,添加[CustomEditor(typeof(MonoBehaviour))]注解,告诉编辑器这个类是扩展哪个组件的Inspector。 第三步,覆写OnInspectorGUI方法,实现自定义的扩展。 public class CustomEditorTest :

tolua#代码简要分析

时光毁灭记忆、已成空白 提交于 2019-12-03 13:56:17
简介 tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类。它是一个用来简化在C#中集成lua的插件,可以自动生成用于在lua中访问Unity的绑定代码,并把C#中的常量、变量、函数、属性、类以及枚举暴露给lua。它是从cstolua衍变而来。从它的名字可以看出,它是集成了原来的tolua代码通过二次封装写了一个C#与tolua(c)的一个中间层。 All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections 基础 要想了解tolua#是如何集成的我们需要对C#的一些特性有一些了解,比如了解C#与原生代码交互的方式等。,我们假设读者已经对lua和tolua++有一个比较熟悉,我们略过lua与c或者C++的交互方式,主要介绍一些C#的特性,来帮助我们接下来分析tolua#的集成原理。 C#特性 Attribute Attribute 是一种可由用户自由定义的修饰符(Modifier),可以用来修饰各种需要被修饰的目标。特性Attribute 的作用是添加元数据。元数据可以被工具支持,比如:编译器用元数据来辅助编译

Unity 编辑器之Inspector面板编辑

别说谁变了你拦得住时间么 提交于 2019-12-03 13:50:19
编辑器有很多类: 编辑器类 。例如:EditorGUI(编辑器界面), EditorGUILayout(编辑器界面布局), EditorGUIUtility(编辑器界面工具)等等这些,都是编辑器对界面进行编辑。 EditorGUILayout 编辑器界面布局 界面的相关事件机制总共有9个: 1.public void OnGUI() ->绘制窗口 2.public void Update() ->刷新方法,100次/秒 3.public void OnInspectorUpdate() ->刷新方法,比Update()少 4.public void OnSelectionChange() ->选择一个对象 5.public void OnDestroy ->销毁窗口 6.public void OnFocus() ->获得焦点 7.public void OnLostFocus() ->失去焦点 8.public void OnHierarchayChange() ->Hierarchay视图窗口文件发生改变 9.public void OnProjectChange() ->Project视图窗口文件发生改变 数据保存并及时更新的问题: 编辑Inspector属性时,我先输入数据,然后将面板上可视化的数据第一次保存,之后再改变数据,把unity项目工程关掉再重新打开

Unity Editor(三) 自定义窗口

天大地大妈咪最大 提交于 2019-12-03 13:49:03
本文参自: http://mp.weixin.qq.com/s/tMSAIND4Pq0farn2jY8rwg 本文为本人学习上连接的笔记有改动,请点击以上链接查看原文,尊重楼主知识产权。 Unity Editor自定义窗口 目标: 1.了解一些属性的使用 2.创建一个自定义窗口 最终目标: 利用学到的东西制作自己的工具(自定义的窗口、Inspector、菜单、插件等等)。 最终效果: 准备工作: 在之前的项目中,找到 Editor 文件夹,然后创建一个新的 C# 脚本,命名为“MyFirstWindow”,然后双击打开脚本,添加如下代码: using System .Collections ; using System .Collections .Generic ; using UnityEngine ; using UnityEditor ; using System ; using UnityEditor .SceneManagement ; using System .IO ; //继承自EditorWindow类 public class MyFirstWindow : EditorWindow { string bugReporterName = "" ; string description = "" ; GameObject buggyGameObject ; /

unity编辑器扩展--自定义Scene界面UI

☆樱花仙子☆ 提交于 2019-12-03 13:47:16
本文讲的是在编辑状态下,对Scene界面的一些UI操作。作用在于地编,或者把一些繁琐的东西做个编辑界面给策划自己去设计。先上效果图: 首先,在场景任意物体上挂上你的MONO脚本,具体脚本实现什么功能自行设计。 这里我们简单在灯光下面挂一个MyGraph脚本。 public class MyGraph : MonoBehaviour { public Transform cube; } 然后就是响应问题,我们怎么实现图中一点击灯光,就弹出对应的UI呢。这里需要用到[CustomEditor]和OnSceneGUI()。 我们创建一个MyGraphEditor类,它需要继承Editor,并且在开头加上[CustomEditor(typeof(MyGraph))]。 using UnityEngine; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement; [CustomEditor(typeof(MyGraph))] public class MyGraphEditor : Editor { private bool _linkMode; private MyGraph m_graph; private Transform cube; private