(译)快速入门Unity编辑器拓展(IMGUI)
前言
我的技能编辑器马上就要和大家见面了,正好最近几天编辑器拓展接触的比较多一点,就想着趁热打铁优化一下架构并且重置一波UI,因为本来的样子雀食丑的一,期间遇到了许多问题,在搜索Control IDs相关内容的找到了Bunny大神的这篇文章,他将编辑器拓展里一些十分晦涩的概念以及一些事件的运行流程都清晰的解读了,故翻译出来分享给大家。
本文翻译自:https://github.com/Bunny83/Unity-Articles/blob/master/IMGUI%20crash%20course.md
Unity的IMGUI系统非常简单,但功能非常强大。主要部分有:
OnGUI callback。此回调用于处理与GUI有关的所有事情。
与OnGUI关系密切的Event class。
GUIStyle class定义一个控件的外观。它实际上负责任何GUI的绘制工作。
GUISkin class这基本上只是一个预定义的控件样式集合,并且拥有一个自定义style数组,可以自由拓展。
GUIUtility与EditorGUIUtility。当使用GUILayout class时,不要忘 ...
Unity编辑器拓展Wiki开源项目,装得下,世界都是你的
前言
在座的各位,凡是做过Unity编辑器拓展的都知道其知识十分零散和细碎,如果平时没有积累和记录的话,制作一个工具往往需要百度谷歌很多次去查找某个实现,可以说异常折磨,我之前有写过一篇比较宏观的编辑器拓展总结:https://www.lfzxb.top/unity-editor-extension-base/ ,但也只是提供了一个大致的方向,涉及更加详细的实现却没有提及,这也不是我不想写,编辑器UI千变万化,雀食是没有办法用一篇文章全写下来。
我们仔细思考开发编辑器UI这个过程,我们得到了什么?
不,我们什么都没有得到,这种知识可以说不具备任何的迁移运用特性,雀食是这样的,我在学校写了一年的Unity编辑器拓展,在实习的时候写UE4的Slate直接麻了(当然也不排除是Slate过于博大精深导致的,懂得都懂,不懂的说了也不懂,利益相关,写完文章再匿了)。
凑巧,前几天一位朋友 @马三小伙儿 做了一次技术分享,就是将常用的编辑器拓展功能全部整合在一个仓库了,随用随取。仓库地址:https://github.com/XINCGer/UnityToolchainsTrick ,目前这个库 ...
Odin常用功能整理
视频:
正文
特性效果预览
新版本Odin提供一个AttributeOverView EditorWindow,专门用于预览各个特性的效果
通过Tools-Odin Inspector-Attribute Overview即可打开:
PropertyTree
一个超级厉害的属性树,可以支持任意类型(如果一些字段类型无法绘制,则需要添加ShowOdinSerializedPropertiesInInspector字段到根class上)在任意位置上的序列化显示,例如
123TargetData targetData = new TargetData();PropertyTree tree = PropertyTree.Create(targetData);tree.Draw(false);
另外也可以参考xNode的EditorWindow中的节点,也是这样实现的:
需要注意的是,这个PropertyTree并不会帮我们永久化数据,虽然他内部使用了SO实现,但是仅仅是内存中的,并不会保存到文件,所以临时的绘制可以用任意类,要求持久化的就必须是继承自SO的类。
如果想要针 ...
我的高中历程
开端
2014年9月1日,我来到丰县中学,梦想中的中学在那时我的眼中是如此的耀眼和夺目。
2021年4月8日,我坐在大学宿舍里,听着网易云,敲着键盘,本以为高中的回忆依旧会清晰无比,但实际上已经残破不堪,乃至我连时间线都有些搞不清了,哦,恍惚间,已经7年了啊。
我试图用文字回忆,再记录那已经有些模糊的高中历程,为以后的自己,也为正在看这篇文章的人。
高一
我是提前招生进实验班的一个幸运儿,这不是谦虚,整个过程有太多的巧合,恰巧那一次考进了年级前50,恰巧参加了那次年级前50才能参加的提前招生考试,恰巧人数没招够,恰巧,我进来了。
但是幸运女神终将离我而去,剩下的时间全都靠自己。
我努力过,但是真的没有用,我真真切切感受到了自己在应试教育下的极限,周围全是优秀的同学,大家越来越进入状态,我的名次却在稳步后退,那种感觉,很无力。
因为是实验班,每个周末我们还要从早上开始上半天课,至于是从什么时候开始上6天课,休息半天的,我记不清了,但是我有个很喜欢的时间段,那就是在周末冬天清冷的早晨,蜷缩在被窝里,听着室友手机里放的《残酷月光》《吻得太逼真》《See You Again》。
每天早上 ...
NodeGraphProcessor整合Odin
前言
本人一直对节点编辑器比较感兴趣,最近看到有网友已经基于GraphView做出了自己的剧情编辑器,技能编辑器等,我也手痒难耐,并且眼馋GraphView的颜值很久了,决定来学习一下,并且准备把自己的技能编辑器移植过来。
NodeGraphProcessor版本:https://github.com/alelievr/NodeGraphProcessor/commit/bea17d70217f44509c30086ec04a4cfbe1836751
NodeGraphProcessor + Odin:https://github.com/wqaetly/NodeGraphProcessor
正文
GraphView介绍
GraphView是Unity推出的一个基于UIElement的节点编辑器UI模块,基建很完全,有多选,拖动,缩放,Group等功能,但是我没有找到官方的文档和示例,大家可以跟着这个UP主学习一下怎么从零开始使用GraphView做一个节点编辑器:Mert Kirimgeri
他还是 NodeBasedDialogueSystem 的作者
UIElemen ...
URP下屏幕空间贴花(ScreenSpaceDecal)学习笔记
前言
这几天学习了下Colin大神的屏幕空间贴花实现,感觉其中的算法实现和坐标转换让本笨比拍案叫绝,故记录分享一下。
大体思路
根据在任意坐标系中,已知一个物体A的坐标,以及另一个物体B相对于物体A的偏移量,即可得知物体B坐标的定理。我们可以将Camera坐标和从Camera到顶点的射线从相机空间转换到模型空间,然后利用从VS到PS的线性插值(其实是类似我们从深度图重建世界坐标时,构造四条从相机到屏幕面片四个顶点的射线,利用VS到PS的线性插值得到片元数目的射线原理,即可得知屏幕面片每一个片元对应的世界空间坐标),即可得知物体每一个片元对应的模型空间坐标,又因为我们使用了单位长度为1的Cube作为投射器,所以就可以直接用这个坐标当成UV去采样贴图(由于我们只是需要类似一个面片一样的贴花,所以需要裁剪掉除0~1范围外的所有UV),达成贴花的效果。
正文
基础设置
RenderQueue
1"Queue" = "Transparent-499"
为了避免渲染顺序问题,把其渲染队列放到Transparent,并且在任何半透明物体之前渲染
...
NKGMoba技能系统联网Demo(内存泄漏尊享版)
warning 本项目完全开源免费,美术资源皆来源网络,仅供学习交流使用,严禁用于商业用途,否则造成的任何法律纠纷本人概不负责。开源地址:https://gitee.com/NKG_admin/NKGMobaBasedOnET
前言
前几天搞了一个Linux下的寻路库,想趁此机会把这个Moba开源项目部署到服务器上,自娱自乐一下,但是整个项目都是围绕技能系统展开的,对于上下线相关的处理还没做好,又没有房间机制,所以会有非常多由同一账号上下线导致的BUG。本篇文章主要是说明一下正确的Demo使用姿势
正文
Demo内容
英雄:热饭班长
被动技能,每次攻击都会在敌人身上叠加1层流血Buff,在5s内造成持续伤害,一旦一名敌方英雄身上流血效果达到5层,玩家自身将会获得持续5s的血怒Buff,大幅提高自己攻击力,在此期间所有的攻击都会对敌人直接叠加满层的流血效果。
Q技能,延迟0.5s后挥舞巨斧一周,外圈伤害比内圈伤害高,并且可以叠加血怒Buff
W技能,下一次普攻将会减速敌人99%,可叠加血怒Buff
E技能,面前锥形范围内敌人造成禁锢效果
每次进入战斗地图由系统分配阵营,将鼠标放 ...
构建recastnavigation并部署服务端到Linux
前言
这几天有群友Mac运行不了Moba项目,是因为recastnavigation我编译的是Windows专用的动态dll库,用Mac就得编译一个dylib,好在最后解决了
正好前阵子换了博客系统,之前买的服务器空闲下来了,那我索性再去Linux编一个so的吧,正好把项目架设到服务器上,自娱自乐一下。
本文提及Linux专用的premake5.lua和用于p/invoke的文件链接:https://gitee.com/NKG_admin/NKGMobaBasedOnET/tree/master/RecastNavMesh/Core/Linux-RecastNavDll
文章部分内容参照 @footman 大佬的doc文档
环境
CentOS 7.6(注意,因为在写本篇文章过程中我进行了多次试验,重置了很多次系统,所以下面的一些截图可能环境于此处不一致,以此处为准)
服务器配置
先去阿里云服务器控制台把需要的端口开了
安全-防火墙-添加规则
只添加这两个规则就够了,一个用于FTP操作文件(我们FinalShell就是连接的这个端口),一个作为游戏服务器端口
客户终端配置
使 ...
(译)SRP Batcher Speed up your rendering!
推荐去个人网站或者原文观阅文章,因为文章中有嵌入式视频:
https://www.lfzxb.top/srp-batcher-speed-up-your-rendering/
本文翻译自:SRP Batcher: Speed up your rendering! 和 https://docs.unity3d.com/Manual/SRPBatcher.html
在2018,我们介绍了一个被称为SRP的高度自定义的渲染技术,一个被称为SRP Batcher新的引擎底层Loop就是这个技术的一部分,SRP Batcher可以在渲染时加速你的CPU 1.2到4倍(这取决于你的场景)。让我们看看如何这个功能的最佳实践吧!
上面那个视频显示了Unity渲染时最坏的一个场景:每个对象都是动态的,并且使用不同的材质(材质的颜色或者贴图等属性不同),所以尽管非常多相同的Mesh,但是在渲染时每个Mesh都会被当成不同的Mesh进行渲染(所以无法使用GPU Instance优化技术)。这个场景使用SRP Batcher在PS4平台上可以加速4倍(这个视频是PC的,渲染API是DX11)
注意:当 ...
《守望先锋》GDC2017技术分享精粹重制版总目录
本文章已于2022.2.1更新,新增了每个视频的内容大纲所对应的时间点内容,以及个人对视频片段简单的内容概括
《守望先锋》2017 GDC系列的分享前几年给了我很多帮助,尤其是kevinan大神的翻译更让我受益良多,如今我再想温习一下相关技术却发现很多网络上的文章图片都已经坏掉了,故在此收集网络资源发布重置版,当成备份。
重制版内容:新增多级标题,方便分块阅读,部分图片已由本人重置,上传了武器和技能系统PDF,一些必要的地方我录制了Gif图,方便观看。
《守望先锋》GDC 2017技术分享视频内容大纲
《守望先锋》架构设计和网络同步
原视频链接
《守望先锋》回放技术-阵亡镜头、全场最佳和亮眼表现
原视频链接
《守望先锋》网络脚本化的武器和技能系统
原视频链接