Box2D篇:整合Box2D到项目,并支持导出数据到服务端
Box2D介绍 为游戏打造的2D物理引擎,就像Unity自带的2D物理引擎一样的功能 Box2D官网 http://box2d.org 白纸无字大佬整合的Box2D地址 https://github.com/Zonciu/Box2DSharp 绪论 因为服务端对某些技能进行击中判定,所以需要一个不依赖于Unity的物理引擎库,对于我做的Moba游戏,Box2D无疑是最佳选择。 如果是FPS游戏想在服务端做碰撞检测,需要3D的物理引擎库,因为你用2D物理引擎无法进行爆头,腰射这种判定。 具体步骤 下载白纸无字的Box2D 客户端配置 运行link.bat批处理命令 然后只需要将这几个文件放到项目的Plugins文件夹下面即可 服务端配置 同样的,我们在服务端创建Box2D项目 注意要开启允许不安全代码才不会报错 Box2D碰撞体数据可视化编辑器 https://www.lfzxb.top/box2d_unityvistualeditor/ Box2D碰撞体碰撞关系可视化编辑器 https://www.lfzxb.top/box2d_collisionrelationvisu...
为Unity搭建完善的的Cmd工作环境
本文章已于2021.5.19更新,Monkey Commander支持指定自定义程序集,大幅优化了扫描程序集耗时。 前言 我们在使用Unity开发游戏的时候,往往会需要GM工具来测试游戏稳定性,在游戏中呼出对话框输入命令行执行对应GM代码是非常高效的(下图来自B站Up:https://www.bilibili.com/video/BV1v741187To) 此外,对于项目中不断增加的MenuItem编辑器拓展,每次使用工具都要去翻找对应的条目也是很麻烦的一件事,尤其是对于嵌套层次稍深的条目。。。 如果有个插件可以在Editor中输入Cmd执行对应MenuItem代码就好了,幸运的是上面提到的两个问题,我都找到了解决方案 正文 Runtime Cmd-UnityIngameDebugConsole 首先是我们Runtime的Cmd,推荐:https://github.com/yasirkula/UnityIngameDebugConsole 插件 下载之后我们只需要把 放到场景中即可 如果我们想要在游戏中根据命令执行某个方法(这是最简单直接的用法,同样还支持参数传递,返回值...
ET篇:云端分布式服务器部署教程
本文章已于2021.9.7更新,更正ET 6.0的地址配置以及含义,新增Linux实操步骤 前言 对于Linux部署的实操部分,参见:https://www.lfzxb.top/recastnavigation-and-et-to-linux 正文 ET6.0版本配置 现在大多人用的都是云服务器,会将外网IP映射到内网IP(网卡IP),所以一般外网地址和内网地址都是内网IP。 实际上我试过将Socket绑定到云服务器的公网IP,会直接报错 但是服务端会将外网地址传递回客户端让客户端连接Gate,但是我们外网IP只能填服务器的内网IP,也就会导致客户端无法和服务端通信,所以我们要多做一列地址专门告诉客户端服务端的外网地址 总结一下 我们约定,服务器公网IP为192.168.0.1,内网IP为44.117.7.8
ET篇:使用FairyGUI进行开发的流程
本文章已于2021.8.31更新,新增为ET6.0而生的FGUI插件(Lua版本)安装与配置相关教程 本文章已于2021.1.29更新,新增为ET5.0而生的FGUI插件(Lua版本)安装与配置相关教程 环境准备 FairyGUI 官网:http://www.fairygui.com 编辑器下载:http://www.fairygui.com/product/ 官方教程:http://www.fairygui.com/guide/ 开发工具 Unity 2017.4 Rider 2018.3 ET5.0 感谢有招小弟的大佬吗的大力支持 Duke大佬的FairyGUI分支 链接:https://github.com/DukeChiang/DCET Unity项目结构梳理 Hotfix部分 Asset/Bundles/FUI/Common_atlas0.png:会被打成AB包的FGUI图片资源(AB标签:Common.unity3d) Asset/Bundles/FUI/Common_fui.bytes:会被打成AB包的FGUI布局数据(AB标签:Common_fui.unity3...
ET&&FGUI接入xasset流程
本文章已于2021.7.9更新,修复FGUI释放UI包时,ab释放所有权问题。感谢网友 小太阳 的提醒。 本文章已于2021.3.29更新,FGUI编辑器升级到2021.1.0,FGUI SDK升级到4.2.0,新增FGUI资源加载全异步支持,简化大量代码。感谢网友ˇ℉un . Shīne的提醒。 前言 技能系统暂时告一段落,现在要花点时间规范一下客户端这边的资源管理以及一些流程优化,这里选择轻量高效资源管理框架xasset:https://github.com/xasset/xasset 版本为:https://github.com/xasset/xasset/commit/3d4983cd24ff92a63156c8078caf34b20d2d4c02 代码量很少,一天就能看个差不多,但是质量很高,如果只追求使用的话,是可以开箱即用的。 另外我对xasset底层源码做了一些修改,主要是为了迎合我们ET传统艺能await/async样式代码,所以推荐大家直接使用我项目(下文的Moba项目)中的xasset源码 想要入门此资源管理框架的可以查看:https://www.lfzx...
ET篇:那些千万不能踩的坑
本篇博客记录ET中所有的坑,希望对大家有帮助 前方高能预警 1.不要在热更层的async语句中使用try Catch finally语法,因为finally语句不会执行(在Try或Catch中执行Return)!** 2.报错信息:BsonSerializationException: When using DictionaryRepresentation.Document key values must serialize as strings. 原因:Bson默认序列化需要string的key 解决方案:https://stackoverflow.com/questions/28111846/bsonserializationexception-when-serializing-a-dictionarydatetime-t-to-bson** 3.报错信息:Element 'Id' does not match any field or property of class 原因:使用Bson反序列化之前没有对牵扯到的继承关系进行注册 解...
ET篇:账号异常解决方案汇总
前言 当然了,网络游戏中的异常太多了,断线重连,封号处理之类的,但是目前我还没有接触到那些模块,就没必要做超前的处理,等做到了也会整合到这篇博客里,本篇博客主要是讲解思路,可能代码上面有些描述不够清晰,大家可以去我的项目里翻一下完整代码 https://gitee.com/NKG_admin/MKGMobaBasedOnET 常见异常为 账号被人顶下来 客户端自身或者网络问题(死机,网络不良)无法连接服务器或者与服务器断开连接 客户端突发状况(断电,退出游戏),与服务器断开连接 在开始说明解决方案之前,我们先明确几个概念 如果客户端这边退出游戏,将会调用Session.Dispose(),并且服务端与之对应的Session也会执行Dispose 网络不良或者没有网络,将不会调用Session.Dispose(),要靠双端的心跳包情况来让服务端判断是否要断开连接(执行Session.Dispose()),然后双端各自执行断线后的逻辑 emmm,为什么这两个简单的概念把我绕了一天?(观众:是不是脑瘫就不用我们多说了⑧) 对应的三个解决方案 账号被人顶下来的解决方案 既然是被人...
ET&&FGUI接入URP流程
前言 前几天技能系统发布了新版本,休息了以下,接下来要开始开发Moba项目的特效部分了,准备使用Shader Graph(简称SG)技术栈,但是SG只在SRP中才可以正常工作,所以要做一些适配。 环境 DCET中的FGUI模块(Model层与Hotfix层) ET 5.0 Unity 2019.4.8 LTS URP 7.3.1 步骤 由于URP版本中Camera的特殊性(使用Render Type和CameraStack控制渲染),需要先对相机模块进行更改 首先Unity.Model和ThirdParty的Assembly Definition需要索引Unity.RenderPipeline.Universal.Runtime 我们要确保整个项目只有一个Render Type为Base的Camera,否则渲染将不会如我们所愿的那样(指Build-in管线中相机渲染结果的自动叠加) 首先更改FGUI源码中的StageCamera.cs文件 123456789101112131415161718192021222324252627282930313233 /// &l...
探索C#中值类型/引用类型为空时所占用的内存大小
前言 又看到一个比较让人害怕的面试题,实例化一个C#的空class会占用多少内存空间。 。。。为什么会有这种问题,当时第一反应肯定不是零,至少要像C++那样有一个区别地址的偏移吧,不然找都找不到,所以就猜了1。 结果果然不出我所料,我蒙错了,不会就学。 找了一大圈,终于找到一个讲的全面的帖子:https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/may/net-framework-internals-how-the-clr-creates-runtime-objects 下面的内容基本就是围绕这篇文章来说的,也可以直接去看原文。 正文 环境:.Net Framework 4.7.2 IDE:Rider 2019.3.3 编译环境:Debug prefer x86(32bit) 值类型 值类型相较于引用类型好理解多了,他直接分配到栈上,不需要GC,不需要引用机制。所以它空间的计算也是最简单的。直接计算其中包含的字段空间即可(有一些特性会影响内存的编排,不过不在本篇文章讨论范围内了)。 计算机中的内存通常以字节的形式组...
提取LOL全部美术资源
前言 去年发布了一个提取LOL资源的视频,感谢大家喜爱 但是我发现很多朋友并不满足于视频中提到的那些,还想提取地图之类的资源,所以我干脆从零开始教大家提取图片,声音,模型,地图 环境准备 先下载工具 Obsidian,WAD资源转换工具,用于分析WAD文件,导出我们认识的资源类型(原画,UI,音效,视频等):https://github.com/Crauzer/Obsidian LoL-MAPGEO-Converter,地图导出工具:https://github.com/FrankTheBoxMonster/LoL-MAPGEO-Converter lol2dae,用于导出模型:https://sourceforge.net/projects/lol2dae/ Obsidian使用教程 新版的Obsidian可以自动整理资源索引表,如果打开wad文件还是乱码,开启科学上网,重新打开软件即可。 对于项目的原画,UI,音效,视频等资源,皆位于 英雄联盟\LeagueClient\Plugins 可以直接在这个目录搜索wad后缀名,然后根据自己喜好进行导出即可! 提取地图 ...









