Serialize功能Unity3D 中提供了非常方便的功能可以帮助用户将 成员变量 在Inspector中显示,并且定义Serialize关系. 简单的说,在没有自定义Inspector的情况下所有显示在Inspector 中的属性都同时具有Serialize功能. 换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件. 本文说说可被Serialize的变量的定义方法 1. public 变量在没有加入任何Attribute的前提下,public变量是默认…
1. C#脚本如下: using UnityEngine; using System.Collections; public class MyTest : MonoBehaviour { ; ; [System.Serializable] public class TestOne { ; ; } //在此处实例化之后,才会在Inspector中显示TestOne中的变量 public TestOne tOne; [System.Serializable] public class Equipme…
环境:Win10 读取text内容后unity报错:Input string was not in the correct format 同时在Inspector面板中无法预览Text文本内容 随后发现只有文本中有中文才会出现这种情况 解决方法就是将Text另存为UTF-8编码格式…
Jan.David Nothing is impossible, the word itself says 'I'm possible'!" — Audrey Hepburn winform 自定义控件属性在属性面板中显示的问题 我们做了自定义控件,在工具箱里拖出来的时候,想要直接在属性面板中直接编辑控件的自定义属性 我们可以用如下标签 [Browsable(true)] [Description("属性描述"), Category("属性卡名称"),De…
代码: [MenuItem("Tools/Test",false,1)]    static void Test()    {        Debug.Log("test");      } 注意:MenuItem中第一个参数:需要创建选项在工具栏中的路径,此路径的父目录可以是Unity中已存在的,也可以自己直接同子目录一起创建,例如创建“MyApp/FPS”路径. MenuItem中第二个参数:用于菜单项是否启用,后面会详细介绍. MenuItem中第三个参数:…
在组件中右击创建一个选项代码: [MenuItem("CONTEXT/PlayerHealth/InitHealth")]    static void Test5()    {        Debug.Log("init");    } 说明:MenuItem中第二个参数:组件名 MenuItem中第三个参数:选项名 修改该组件下面的字段的值的代码: [MenuItem("CONTEXT/Rigidbody/Clear")]    stati…
今天开始协助主程一起制作新框架.主程让我写关于新版UI框架注册UI预制体用的快捷编辑器. 现学现写,总算完成了. 可以直接把选中的预制体添加到UIController的数组中,期间涉及到改变大小.所以使用了List进行临时转换 其他调整角标越界问题和一些编辑器基础知识就不需要提了,重点记一下在Inspector面板中若编辑内容场景检测不到变化,需要手动做一些无用操作再Ctrl+S才能保存的问题.在百度上查到很多人给的是这个方法: 试验证明在本项目中并没有效果,后来查Google进到Unity官方…
在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作出的任何动作,这些全部都是用编辑器脚本来实现的. 这篇教程假设你已经熟悉Unity的基本工作流程.如果你知道如何在编辑器中创建物体.预设.场景并且知道如何移动它们,知道如何添加组件,那么你可以开始本教程的学习了. 最终结果预览 让我们看一下我们做出的最终结果是什么样子: 如你所见,我们会创建一个编辑…
Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 unity unity Editor ScirptableObject  Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 OverView API ScriptableObject是unity中的一种特别的类型,它不需要挂在场景中的对象上.它可以视作asset资源一样,存储在项目文件中.在一些特殊的情况下要比JSON,XML及TXT方式来存储持久化数据要受益…
简单说一下属性和字段的区别:字段就是成员变量,而属性确实提供给外部访问内部成员变量的接口.之所以会有属性的出现,就是为了避免外部对类的成员的直接访问,通俗的说就是OOP中的封装思想. using UnityEngine; using System.Collections; public class DemoTest : MonoBehaviour { private int _score; public int Score { get { return _score; } set { ) { v…
分类:Unity.C#.VS2015 创建日期:2016-04-16 一.简介 这一节先利用GUI显示一个简单的界面(以后还会专门介绍GUI),并解释如何在VS2015中调试C#脚本. 本节例子的运行效果如下: 二.调试C#脚本的方式 有以下方式: (1)利用断点调试.断点设置和取消的办法与在控制台应用程序中利用断点调试C#代码的办法相同. (2)通过Debug类提供的方法在后台输出调试信息.该办法会直接在VS2015输出窗口以及Unity的控制台(Console)中输出调试信息. (3)在Un…
RequireComponent的使用: 当你添加的一个用了RequireComponent组件的脚本,需要的组件将会自动被添加到game object(游戏物体).这个可以有效的避免组装错误.举个例子一个脚本可能需要刚体总是被添加在相同的game object(游戏物体)上.用RequireComponent属性的话,这个过程将被自动完成,因此你可以永远不会犯组装错误. 用法:在新建的类前面加 [RequireComponent(typeof(Rigidbody))] 如图:使用前 AddCo…
一.Create Custom Inspector 重绘inspector面板一方面是我们的挂在脚本的窗口变得友好,另一方面可以让其变得更强大,比如添加一些有效性验证. 二.重要说明 1.EditorUtility.SetDirty(object target):该方法可以表明target对象为dirty((⊙﹏⊙)b,怎么翻译合适?)的,unity会将有dirty标记的已经改变的对象在磁盘中存储,可以用来对一些修改数据的强制刷新,这里用来立即绘制GUI(我们对GUI的修改不会立即生效,只有鼠标…
学习NGUI插件的时候,突然间有一个问题为什么它这些属性可以通过弹出窗口来选中呢? 而我自己写的组件只能使用手动拖放的方式=.=. Unity开发了组件Inspector视图扩展API,如果我们要写插件方便别人来使用,使用编辑器扩展API让我们的组件显示的更华丽,使用方便 Texture弹出选择框选中图片赋值: 1个组件对应1个Edit扩展器,继承Editor必须让入Editor文件夹下 MyComponent: using UnityEngine; using System.Collectio…
自定义Inspector面板的步骤: Unity内创建自定义的Inspector需要在Asset的任意文件夹下创建一个名字是Editor的文件夹,随后这个文件夹内的cs文件就会被放在vstu生成的Editor程序集里. 自定义Inspector需要创建一个继承自UnityEditor.Editor的类,并且提供一个[CustomEditor(typeof(Behavior))]类特性标记,其中Behaviour就是要自定义观察器的目标组件类型. 然后在Editor派生类里实现OnInspecto…
在win7-64bit环境下,boa-constructor 0.6.1 的palette面板中没有控件图标,空白一片.将面板窗口拉大,发现那些图标在很下面的位置,X轴的排列与正常状态一致. 软件环境: python2.6.6wxPython2.8-win32-unicode-2.8.11.0-py26boa-constructor-0.6.1.src.win32 上网查到解决办法: 在boa根目录,找到 Palette.py,将 408行的语句 newButton = btnType(self…
断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 http://www.cnblogs.com/hont/p/5034419.html “Unity脚本在层级面板中的执行顺序测试1”中,得到一个结论: 1.非Prefab的GameObject…
测试4为一些附加内容,后续的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 http://www.cnblogs.com/hont/p/5034419.html Unity脚本在层级面板中的执行顺序测试3 http://www.cnblogs.com/hont/p/5179427.html 1.基本执行顺序 Awake OnEn…
Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种变化过程要经历无数中间步骤,调用N多次Update,如果直接在Update中不断刷新,界面很容易直接卡死.所以在一个协程中进行一些优化,只保留用户最后一次参数修正,省去中间步骤,就会好很多.这属于Unity编辑器的内容,也属于优化的内容,还是放在优化中吧. 解决问题思路 Unity官网的questi…
今天在优化红点组件,笔者打算将红点id由10进制改为16进制处理,就打算将红点id字段由uint类型改成string类型,用于填写16进制的字符(因为在Inspector面板里,uint/int类型字段不能直接填写16进制表示的数字),且希望限制该字段的输入限制,仅限于填写0-9A-Fa-f等16进制字符串,但unity并没有提供任何PropertyAttribute类来限制字符输入,达到类似于as3 text组件的restrict效果.因此笔者自定义了一个RestrictAttribute类,…