说明:在unity3d中自己定义的scriptobject中使用了一个可以序列化的类,希望可以在界面上显示,但这个类的一个树型结构,其中包含了同类型的列表。这种情况下,利用unity自己的序列化方式虽然能够用,但官方强烈不让这样用,还直接报红:Serialization depth limit exceeded at '‘. There may be an object composition c
1. 基本介绍1. MenuItem使用 MenuItem 特性,让静态函数作为一个菜单栏功能[MenuItem(“Tools/mytest”)]第三个参数层级,可控制显示的顺序。不同级别的参数最小值和最大值之间最小为11添加快捷键%-CTRL# -Shift& -Alt[MenuItem( “Tools/New Option %#a” )] 即Alt+Shift+A [MenuItem(
转载 2024-09-08 20:13:52
77阅读
Unity热跟新之AssetBundleAB包1.了解AB包是什么?2.了解AB包有什么作用?3.生成AB包资源文件?4.使用AB包资源文件5.AB包资源加载管理器6.练习题 AB包1.了解AB包是什么?特定于平台的资产压缩包,有点类似压缩文件。 资产包括:模型、贴图、预设体、音效、材质球等等。2.了解AB包有什么作用?1.相对Resources下的资源,AB包更好管理资源2.减少包体大小1.
关于 Unity 内置属性可以从到官方文档中查询,本篇文章只介绍一些常用的内置属性,如下图所示: 接下来进行项目设置,创建一个空的 Unity 工程,名字由你来定,文件夹的层级关系如下:目前还不需要Editor文件夹,但是先创建,往后的教程中会用到。然后再 Scripts 文件夹中创建一个新的 C# 脚本,命名为“People”,双击打开该脚本。AddComponentMenu 属性允许
写在前面全文解析圆形Image组件的实现原理,取关键代码介绍算法细节,源码已经上传Github下载地址,欢迎下载试用。一、Unity原生Image组件实现圆形图片的缺陷Mask渲染消耗许多游戏项目里免不了有很多图片是以圆形形式展示的,如头像,技能Icon等,一般做法是使用Image组件,再加上一个圆形的Mask。实现非常简单,但因为影响效率,许多关于ui方面的Unity效率优化文章,都会建议开发者
转载 2024-09-04 06:14:54
55阅读
脚本编译在4个步骤中执行:1.所有在"Standard Assets", "Pro Standard Assets" 或 "Plugins"的脚本被首先编译。在这些文件夹之内的脚本不能直接访问这些文件夹之外脚本。不能直接引用或它的 变量,但是可以使用GameObject.SentMessage与它们通信。2.所有在"Standard Assets/Editor", "Pro Standard As
文章目录前言一、效果图二、思路三、实现1. 获取所有的物体2. 过滤掉一些不要的物体2.1 只获取是根节点的Transform2.2 过滤预制体3. 判断一个根节点里的所有组件是否引用了查询物体四、完整代码总结 前言有时需要查找一个GameObject有没被场景里的哪些组件引用,直接查效率比较低,而且还可能漏了,这里做了一个小工具来查找一、效果图二、思路想知道一个组件有没有引用到我们的GameO
转载 2024-04-05 11:24:55
679阅读
Unity Editor Window**EditorGUILayout:**提供Unity内置类或结构体的布局组件,能够实现在Inspcctor和EditorWindow中自定义编辑器。EditorGUILayout是对GUILayout的扩展,它主要用于Inspector和EditorWindow。EditorGUI是Fixed排列,EditorGUILayout则是Automatic;基本控
转载 7月前
110阅读
1.前言通过上次的学习,我们已经了解了各个自动布局组件的功能和用法,以及为什么不能用已有的自动布局组件达成我们的需求。这次我们就要为了达成需求而查看这些自动布局组件的源代码。源代码的目录在 游戏安装目录\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.uguiEditor代码在Editor目录下,例如Editor\UI\
转载 10月前
260阅读
        汇总一些Unity Editor开发的常用方法和实现方式,会持续更新。添加自定义菜单栏方法using UnityEngine; using UnityEditor; public class EditorTools : EditorWindow { [MenuItem("EditorTools/自定义的编辑器方法")] pu
1. 使用StringBuilder的好处   由于string对象是不可更改的,我们每次使用string类的方法时,都会在内存中重新创建一个新的string对象,这时候就要为该对象分配内存空间了。如果在一段代码中,频繁执行string类的方法来修改字符串对象,那么内存消耗就会很大。例如,在一个循环中,频繁地进行字符串拼接的操作,假如这个循环执行多次,那么每次拼接字符串所产生的字符串将会
转载 2024-07-15 09:02:51
56阅读
官方也有一个文章,举了 MenuItem 类的一些使用方法,传送门:http://unity3d.com/cn/learn/tutorials/modules/intermediate/editor/menu-items首先是unity顶部菜单栏的一些用法,如图:注意:MenuItem是编辑器类,所以技能导入 using UnityEditor; 命名空间,且一般我们的类也不是集成自MonoBeh
文章目录一、前言二、直观感受法线贴图三、表面法线1、表面法线的概念2、空间与坐标系2.1、世界空间——世界坐标系2.2、局部空间——局部坐标系2.3、切线空间——切线坐标系2.4、小结四、法线贴图1、法线贴图如何存储法线数据2、有法线贴图与无法线贴图效果对比3、徒手画法线贴图凹凸效果五、场景法线颜色可视化1、shader,法线信息转rgb颜色2、摄像机应用shader,Camera.SetRep
错误如下: UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOption
Boo
原创 2024-08-09 14:34:19
434阅读
转自:http://bbs.9ria.com/thread-206230-1-1.html 在阅读本教程之前,你需要对Unity的操作流程有一些基础的认识,并且最好了解内置的GUI系统如何使用。如何让编辑器运行你的代码Unity3D可以通过事件触发来执行你的编辑器代码,但是我们需要一些编译器参数来告知编译器何时需要触发该段代码。[MenuItem(XXX)]声明在一个函数上方,告知编译器
转载 精选 2014-09-19 14:39:03
1635阅读
Unity Custom EditorUnity中可以通过编写脚本实现自定义的Editor。好用Editor可以使开发事半功倍。 Asset Store上大部分第三方插件如NGUI、PlayMaker等都包含自定义Editor的部分。 自定义Editor主要包含两部分:Editor Window和Custom Editor。Editor Window顾名思义就是一个单独窗口的Editor。简单的例
转载 2024-04-05 08:04:12
85阅读
效果展示 Unity单选框,复选框 免费下载地址:请到【https://gitee.com/jacobkay/unity-radiobox-checkbox】中下载UI结构安装说明:下载拖入工程中在要设置的按钮上添加Tab脚本根据添加后,Inspector上的提示,设置鼠标移入及点击时的设置使用说明:TabTxt: 按钮下的textMultipleChoice:是否为复选框IsOn:当前是否
Unity编辑器经常提示一个Warning:Uncaught exception in async net callback: Object reference not set to an instance of an objectUnityEditor.AsyncHTTPClient:Done(State, Int32)Unity的令人费解的BUG,解决方法为取消Show Asset Store
原创 2016-05-03 10:36:15
9280阅读
在Unity做性能优化,或者做一些编辑器工具的时候,如果把收集回来的数据用图表来展示,可以使数据更加直观,如果是性能优化的时候,就能更突显出问题所在。在项目的开发过程中有同事做了个可视化工具,看了一下真实高端,就研究了一下并且简化做了个demo。所以这其实也不能算原创,更多的代码是同事写的,我只能算是介绍了一下代码逻辑和实现原理。首先看下效果:这个是我简化过的版本,数据是在一定范围内随机的,看起来
原创 2018-04-16 16:04:29
10000+阅读
1点赞
2评论
在C#编程中方法的回调有以下几种方式通过接口、通过委托、定时回调、多线程回调,异步回调下面就以代码的形式来讲解这种方式通过接口回调代码示例如下定义接口,定义了一个Run 方法: interface ICallBack { void Run(); } 定义实现接口的类,并实现接口中定义的方法,方法的作用就是输出当前时间: class CallBackClass:ICallBack {
  • 1
  • 2
  • 3
  • 4
  • 5