![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unity3D
文章平均质量分 82
Clank的游戏栈
精通各种游戏开发技术、C# JAVA C++ 底层架构技术。
展开
-
URP渲染管线光照机制剖析
游戏引擎把所有主光源的颜色值叠加好以后,传递给URP的Shader,把所有Additional Lights的光源数据传递给 URP的Shader, URP Shader 获取光源数据,用来做光照计算,来着色, 而向前渲染管线是每个重要光源经过一次pass计算,来叠加到最后得颜色,这样做得有点是可以任意数目的光源与光照计算,缺点是多次绘制性能受影响。(2) 传统渲染管线,采用是逐顶点光照,还是逐像素光照,都是由Shader的实现来决定,而URP把这个开关放到了光源这边,这样方便我们进行响应的配置与调整。原创 2023-02-23 10:44:33 · 455 阅读 · 0 评论 -
横板格斗类游戏实战:游戏数值策划表
a, b, c方案中,a最直接,但是Excel的表格格式对应的解析格式好像是不开源的,多平台移植的时候,可能会有些问题, b方案解析csv代码简单,通用,所以很多项目都用这种方式,c 编写一个额外的脚本,将Excel转成json的文本格式用json库来解析,Json解析库也是非常通用的。表格字段有ID、部位、部位名称、名字、穿戴等级、买⼊价格、卖出价格、介绍、物攻、防御、⾎量、暴击、布、铁、印、⾦币。详细的数值配置表,可以关注我们,领取游戏的Excel表格文件,来进行查阅,了解整个游戏的数值。原创 2023-02-21 09:21:39 · 1122 阅读 · 0 评论 -
横板格斗类游戏实战:战斗核心玩法
游戏开始后,根据关卡,生成游戏地图,生成怪物。升级玩家对象,同时生成游戏的操作UI,游戏的UI,分触摸操作+键盘操作。触摸操作用摇杆+按钮,键盘操作用方向键与技能按键,每个技能上有个字母,表示的是放这个技能的键盘对应的按键,如上图的K,H,Y,O。上一节讲解了游戏的周边,如登陆奖励,任务,商店等,本节来分析游戏战斗中的一些核心的玩法。通关当前章节后,可使用恶魔之印挑战恶魔模式,主要装备来源。今天的游戏玩法介绍就到这里,下一节讲解游戏的数值与策划表。每个小节,打完小怪后,会有一个打怪镇守。原创 2023-02-20 09:25:29 · 449 阅读 · 0 评论 -
Unity基于状态机的架构与设计
如上面的代码所示, 当状态机执行NodeInit节点状态的时候,会初始化时调用OnEnter接口, NodeInit的OnEnter接口中,调用了Init函数来做初始化,首先会创建一个UIRoot, 然后把资源加载界面显示出来,完成资源加载后,进入到登录逻辑节点场景,注意这里,状态机就由原来的NodeInit切换到NodeLogin状态机节点。有了上面的分析,我们对状态机就了解的很清楚了,自然设计一个状态机用来控制游戏的跳转控制逻辑就是非常简单的事情了,我们把游戏中的基于状态机的控制分成。原创 2023-01-09 08:59:44 · 782 阅读 · 0 评论 -
BEPU物理引擎碰撞系统的架构与设计
物理Entity有一个Specific列表保存了一些物理的Entity实例以及与这些Entity实例的碰撞规则,如果碰撞对中的Entity实例在这个表中,就返回这个表中的碰撞规则。延后决定,一个比较特殊的状态,上面说了有3个地方可以决定碰撞策略,如果某一个地方没有碰撞策略,就返回CollisionRule.Defer,进入到下一个地方。,使得物理Entity与周围的物理环境产生碰撞时,如何灵活的控制物理碰撞,本节給大家详细的讲解BEPUphysicsint 物理引擎内部是如何管理与控制碰撞规则的。原创 2022-12-22 08:56:03 · 734 阅读 · 0 评论 -
BEPUphysicsint碰撞事件详解
每个可碰撞的物理Entity的有一个Collidable 对象,通过访问它的CollisionInformation属性就能获取得到,每个Collidable 都有一个自己的ContactEventManager, 通过访问Events 的每个Event的属性,就可以往里面添加回调函数,就可以获得该事件。本文主要详解由物理碰撞所导致的事件。物理事件的回调函数,都是物理引擎执行中回调的,有可能有些操作会改变物理引擎运行环境的Context,导致不安全的操作与异常,如何在回调函数中正确的安全的处理呢?原创 2022-12-16 09:14:13 · 484 阅读 · 0 评论 -
BEPUphysicsint定点数3D物理引擎使用
物理世界创建出来后,目前世界是空的,没有任何物理Enity,接下来就是往物理世界里面放一些物理的Entity。物理事件包括了触发与碰撞。世界创建后,需要模拟迭代物理计算,所以在游戏框架中的某个Update/FixedUpdate的地方来迭代物理世界,代码很简单,调用space的Update接口就可以了。在很多物理Entity中,有一个比较特殊,叫做StaticMesh, 一般我们用来模拟复杂物理环境,它的本质就是根据3D物体的Mesh来创建一个物理Entity出来,形状和3D Mesh一样。原创 2022-12-15 09:18:16 · 564 阅读 · 0 评论 -
BEPUphysicsint定点数3D物理引擎介绍
如果我们的物理引擎使用定点数计算,最后虽然将定点数转化为Unity Transform的相关浮点数显示物体位置,但是最终在决定物理碰撞,游戏事件中, 物理移动中都是定点数化后的整数运行,所以这样就做到了物理引擎迭代的确定性。, 那么1.2对应的定点数为12, (定点数是对应的小数扩大10倍后取整), 如果确定精度是小数点后2位,那么1.2对应的定点数位120(定点数是对应的小数扩大100倍)。帧同步的游戏中如果用物理引擎,为了保证不同设备上的结果一致,需要采用定点数来计算迭代游戏过程中的物理运算。原创 2022-12-13 08:50:13 · 683 阅读 · 0 评论 -
Unity Mesh切割算法详解
比如3D切水果, 在地图的城墙上挖一个洞,今天给大家来分享一个Mesh切割的算法,帮助大家解决项目中需要用到的Mesh切割的问题。在详细的讲解Mesh切割算法之前,先给大家讲解一下一个模型的Mesh数据主要包含哪些部分,等下生成新的Mesh的时候,我们知道每一部分的数据都代表什么。根据切割面,来将物体分成正向部分与反向部分,切割物体后,平面上面的是正向部分(Positive),平面下面的是反向部分(Negative)实例化一个新物体,将切割后的2个Mesh,一个复制给原来的节点,一个复制给新创建的节点。原创 2022-12-09 08:50:33 · 850 阅读 · 0 评论 -
Unity手机游戏发热发烫优化指南与技巧
Unity手机游戏发热发烫优化指南与技巧很多小伙伴做完游戏后,发布到Android,运行,游戏很流畅,也不卡顿,但是跑一会游戏,手机就发热,发烫。客户提出需求,能否让它不发烫? 本文从以下3方面来分析手机发烫的问题,给大家提供一个解决此类问题的通用思路:对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。手机可以理解为是一台小型的电脑, 里面运行了很多app。CPU处理完数据和事件后,如果没有任务要处理了,就会休眠下去, C原创 2022-12-05 09:47:33 · 1782 阅读 · 0 评论 -
Unity ECS内存分配器原理详解
大量的Entity的创建与销毁,大量不同类型的数据对象交叉创建,很容易造成内存碎片。而这一小块内存,无法分配给当前系统的任何一个对象,这样,这小快内存就再也无法使用了,造成内存碎片,随着系统不断运行,随着更多大量的创建与释放,内存碎片越来越多,分配/释放效率也越来越低。Entity的内存分配与内存布局, 在创建Entity的时候,ECS系统就会注意Entity的内存对齐,同时也会注ComponentData在Entity里面排布的内存对齐,如果没有对齐,就会空一些出来。高效的内存模型与布局如何实现?原创 2022-11-15 08:27:03 · 486 阅读 · 0 评论 -
在校学生如何做Unity独立游戏?
由于MMORPG等多人同时在线的游戏都会有AOI的区域,就会频繁有网络玩家进入AOI区域与离开AOI区域,这样就会导致在客户端频繁的创建与删除一个网络玩家对象节点,所以一般我们会基于内存池来管理玩家对象,这样让玩家对象能快速的创建与删除。Unity多人同时在线的游戏会有很大的地图,大量的玩家同时在线,以及玩家会有不同的游戏职业,这样众多的玩家游戏角色我们客户端应该如何来设计呢?大型多人同时在线的游戏会有大量的玩家创建与删除,同时有大量的数据过来,我们在处理网络数据的时候要做好状态的日志,方便我们分析。原创 2022-10-12 13:37:41 · 384 阅读 · 0 评论 -
游戏程序员如何正确的写简历
面试的时候,HR会打印你的简历,先和你聊下基本的情况,安排做一些面试题(如果有),然后就是主管出来对你做技术面试,这个时候主管会把你的简历从头到尾的看一遍,看看你擅长哪些技术,在哪些公司, 有哪些从业经历, 通过你的从业经历,来面试你是否真的都做过,经历过,从面试的过程种了解评估你的能力。所以基本信息里面要写期望薪资,期望薪资的写法也有技巧,你换工作最想拿到的薪资是多少,你就写为最低的薪资,最高的薪资基于最低的薪资高个3000块钱左右,比如你到这里工作至少要15K,那么你就可以写15~18K。原创 2022-09-28 14:00:15 · 2121 阅读 · 0 评论 -
Unity ILRuntime热更新开发原则与接口如何绑定
上一节我们讲解了ILRuntime热更新的技术原理,根据技术原理来搭建ILRuntime的开发环境。对ILRuntime有初步的了解,并且安装了ILRuntime的运行环境与实例化了ILRuntime解释器,创建了生成.net字节码的.dll逻辑热更项目, 并把.dll生成到Unity项目的StreammingAssets下方便运行时加载,而热更新能够热更的就是逻辑热更项目生成的.dll。本节分析ILRuntime基本开发原则与如何做到接口绑定,能使得逻辑热更项目直接调用Unity的引擎API。原创 2022-09-19 13:41:29 · 1030 阅读 · 0 评论 -
杂谈各大游戏引擎优缺点
Flash转H5,商业上不上太成功,后来随着h5的发展,直接转为H5 3D游戏引擎,是最早在H5上跑出大型商业3D游戏的H5 3D引擎, 在H5 3D这块积累了很多经验和成熟上线的产品案例,现在80%左右的3D微信抖音oppo vivo小游戏都是laya引擎做的。白鹭游戏引擎对于H5游戏是有着不可磨灭的贡献,它是最早的H5游戏引擎,它里面的很多工具非常好用,到现在还被其他的引擎使用,比如骨骼动画工具,DragonBones被广泛引用到游戏开发中。(2) 引擎开发2D游戏经过大量验证,非常适合2D游戏开发。原创 2022-09-14 14:12:44 · 2314 阅读 · 0 评论 -
Unity学习资源(超全)汇总 基础+项目+进阶+面试
官方资料Unity安装及规划Unity 基础案例教程Unity框架设计篇Unity热更新+AI专题Unity Shader进阶视频教程Unity性能调优【性能优化】视频教程Unity 网络游戏同步视频教程Unity 游戏开发之面试专区视频教程(API 详解)(官方视频教程,适合英语好的同学)原创 2022-09-06 14:40:34 · 2639 阅读 · 1 评论 -
unity游戏开发中的随机算法
如果触发眩晕成功,则概率重新从8.5%开始递增计算。第一次触发眩晕概率为8.5%第二次为17%,以此类推递增。关于如何使用这上述C系数。原创 2022-09-06 09:31:29 · 1234 阅读 · 0 评论 -
横板格斗类游戏实战:事件订阅与发布系统
一个查找还好,要是多个地方需要改变数值,多个节点都需要被改变,玩家战斗逻辑,不可能每个节点都去找一下,然后设置一下,这样也不灵活,也不方便扩展。当events_map里面有数据的时候,数据结构如下: { “事件名字1”: [监听者1{caller, func}, 监听者2], “事件名字2”: []}玩家在游戏战斗过程中,被某个怪物把血打掉了,然后界面上的UI血条的数值就要发生变化,如图: 1.7-1。当我们要监听某个事件的时候,传入事件的名字,回调时的this对象(caller), 回调函数func。原创 2022-09-05 09:49:36 · 474 阅读 · 0 评论 -
最新Unity如何打包发布到Android
我们可以去掉Android NDK Installed with Unity 这个勾选框,选一个NDK的文件夹,如果NDK的版本不匹配,就会提示你它需要的对应的NDK的版本号, 如上图为19.0.5232133, 这个时候我们就可以到网络上去下载大的版本号为NDK 19的版本。我们要打包发布哪个Unity版本的项目的时候,就安装对应Unity版本的开发环境,点击右边的设置图标,然后选着”添加模块”菜单,勾选Android,这样JDK,与SDK,NDK就已经选好了。环境安装好后,打包一键就可以完成。...原创 2022-09-01 09:24:13 · 2857 阅读 · 0 评论 -
Unity UGUI开发规范
今天给大家分享Unity UI开发相关的一些编码和规范,有了这些指导规范,帮助你的项目获得更好的性能,少走弯路。Unity GUI(也被称为UGUI)经常是项目性能问题的来源。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。考虑使用多分辨率和宽高比大部分情况下,我们一套UI,能基本全部适配好,Unity UI让建立一个可以适应不同分辨率和宽高比屏幕调整位置和缩放UI很简单。...原创 2022-08-26 13:56:52 · 508 阅读 · 0 评论 -
Unity ECS 内存分配器原理详解
大量的Entity的创建与销毁,大量不同类型的数据对象交叉创建,很容易造成内存碎片。而这一小块内存,无法分配给当前系统的任何一个对象,这样,这小快内存就再也无法使用了,造成内存碎片,随着系统不断运行,随着更多大量的创建与释放,内存碎片越来越多,分配/释放效率也越来越低。Entity的内存分配与内存布局, 在创建Entity的时候,ECS系统就会注意Entity的内存对齐,同时也会注ComponentData在Entity里面排布的内存对齐,如果没有对齐,就会空一些出来。高效的内存模型与布局如何实现?原创 2022-08-24 09:16:07 · 348 阅读 · 0 评论 -
Unity Shader实现《氮气加速特效》
Shader 是一种給GPU执行的代码,GPU的渲染流水线,为了方便开发人员定制效果,开放出接口給程序员编写代码来控制,这种程序叫作shader, shader开发语言,cocos采用的是GLSL编程语言。开发人员可以在下图顶点Shader和着色Shader来插入代码。材质是一种配置文件,选择好一个Shader(算法), 并給这个Shader提供必要的参数,当游戏引擎绘制物体的时候,先读取材质,根据材质, 給GPU配置shader和shader要的参数, 这样管道流水线就可以完成的绘制出来这个物体。原创 2022-08-23 09:41:01 · 604 阅读 · 1 评论 -
Unity Mesh切割算法详解
对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,源码素材获取 欢迎你来交流学习。(图1)如何接受玩家的触摸操作,生成切割面做模型切割的时候,我们首先要根据玩家的触摸操作来生成一个切割平面。如图1所示,根据玩家的黑色的划线,我们要基于黑色的划线来生成一个切割平面。主要的步骤如下:(1) 获取起点的屏幕坐标,并结合3D摄像机,把起点的屏幕坐标转到摄像机的视口坐标系下。if (!}...原创 2022-08-19 09:02:40 · 3254 阅读 · 2 评论 -
RVO实战系列:RVO动态避障技术方案介绍
它有两个版本,一个是C++版本,一个是C#的版本,所以基本上RVO的这库可以用到任意的游戏客户端或服务端种,比如JAVA的服务端,我们可以用C++的版本来做native调用即可,也可以直接翻译C#代码为Java,这个工作量比较小。我们在开发游戏的时候经常会遇到这样的问题,当我们寻路的时候,其它人也在寻路,如何避免不从其它人的位置穿过。本节我们来介绍一些Unity 实现RVO的相关资料,后续在详细的讲解ROV算法的原理。今天的RVO的介绍到这里了,关注我们,后续更新RVO实战系列,让你的游戏能动态避障。...原创 2022-08-18 09:13:00 · 3364 阅读 · 0 评论 -
Unity多人同时在线海量玩家角色的架构与设计
由于MMORPG等多人同时在线的游戏都会有AOI的区域,就会频繁有网络玩家进入AOI区域与离开AOI区域,这样就会导致在客户端频繁的创建与删除一个网络玩家对象节点,所以一般我们会基于内存池来管理玩家对象,这样让玩家对象能快速的创建与删除。Unity多人同时在线的游戏会有很大的地图,大量的玩家同时在线,以及玩家会有不同的游戏职业,这样众多的玩家游戏角色我们客户端应该如何来设计呢?大型多人同时在线的游戏会有大量的玩家创建与删除,同时有大量的数据过来,我们在处理网络数据的时候要做好状态的日志,方便我们分析。...原创 2022-08-17 08:51:59 · 727 阅读 · 0 评论 -
Unity 框架如何做好资源管理
加载的时候,使用UnityWebRequest加载StreammingAssets目录下的ab包。Unity 自己推出了基于Addressable的资源管理,本质上和我们上面的AssetsBundle系统类似,有兴趣的同学可以关注一下这个模式的资源管理的发展。作为架构师,在开始动手之前,先分析清楚需求,你才能设计出合理的方案,我们来分析一下Unity资源管理都有哪些需求,把需求想清楚了,设计是自然而然的事情。每次打包的时候,你知道打的是哪个平台,哪个渠道哪个版本的资源包,输出的时候也分平台分渠道。...原创 2022-08-12 09:36:25 · 395 阅读 · 0 评论 -
网络游戏协议:基于Protobuf的序列化与反序列化
每个复杂的数据对象的内部结构都是开发者定义的,所以这块必要更具应用有多少个对象,来编写函数实现,而这些函数可以调用基本数据类型的编码函数,最后组合成byte[];(5) 开发者只需要将要序列化/反序列化的数据对象定义到协议文件,然后运行编译器生成协议文件对应的目标编程语言的代码, 就可以使用里面的类与对象了。解码也类似,基本的数据类型,可以实现一次解码函数,复杂的对象,都是由开发者自己调用基本数据类型的解码,一个个的解码出来。我们先来通过一个简单的案例,来讲解二进制序列化与反序列化的基本原理。...原创 2022-08-11 09:51:45 · 577 阅读 · 0 评论 -
那些事情是用Unity开发项目应该一开始规划好的?如何避免后期酿成巨坑?
2) 使用自己实现的加密解密算法,比如,采用二进制亦或来做加密解密,比如,加密定一个二进制掩码mask, 让每个字节都异或这个mask,得到一个新的数据,这样资源就不能被直接识别出来,使用资源得时候,再把加密数据异或一次mask在解密回来到项目中使用。分析完加密解密算法以后,接下来我们就来看下如何加密我们的资源,先来介绍第一种方案,打资源包的时候,加密单个的资源, 把加密后的数据打入到资源包。等,静态分析代码找到密钥对应的字符串,有了密钥,你用的是标准库,一下加密资源就破解了,分分钟你的资源就被破解了。..原创 2022-08-10 10:10:02 · 214 阅读 · 0 评论 -
Unity3D 学习路线?
Unity是目前最主流的游戏开发引擎,AppStore里面排名前列的游戏绝大部分都是采用Unity引擎来开发的,所以Unity引擎的前景也是非常好的,同时很多AR,VR也是基于Unity的,所以对于做游戏而言Unity引擎是非常值得学习的。如何学习Unity呢?我总结了一下学习Unity的几个阶段和要注意的事项,希望对大家有所帮助。...原创 2022-08-09 09:27:40 · 1206 阅读 · 1 评论 -
Unity游戏排行榜的制作与优化
游戏排行榜排序核心算法的实现排序在游戏开发中是一种十分重要的算法,特别是对于海量的数据,高效的排序算法,是核心与关键,排行榜也是一样的,我们要对全服所有的排行榜的玩家做排序,每次玩家的数据有变化,就会引发排序,最终让我们把排行榜的排名拉取下来。排序算法的性能非常关键点,主流的排序算法都是非常成熟的,对于海量的服务器数据而言,排序算法也有核心的实现模块,这里我们是基于redis 来做排序,redis提供了一个有序列表的功能,内部实现了海量数据的排序,我们只要把数据提交给redis的有序集合,...原创 2022-08-08 09:41:54 · 1766 阅读 · 0 评论 -
MMORPG网络游戏开发之任务系统的架构与设计
在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...原创 2022-08-04 10:36:41 · 2402 阅读 · 0 评论 -
Unity程序员如何提升自己的能力
但是,往往我们工作之后,经常发现学习的东西很少了,学习效率非常低,感觉自己到了一个瓶颈期,久而久之,就演变成『一年工作经验,重复去用十年』的怪圈。不管你是已经工作了,还是正在学习中的unity初学者,如果你想在游戏开发行业中有更高更远的发展,请用五分钟阅读下面的文章。(2) 数据结构与常用算法: 链表, 树, 算法,图的遍历,树的遍历,算法时间与空间复杂度等;(4) 扎实的3D数学,游戏数学, 向量,四元素,矩阵, 法线,点乘,叉积等等。(2)要熟练的使用主流的一些设计模式,并有自己的体会,而不是死记。..原创 2022-08-03 10:00:50 · 2268 阅读 · 0 评论 -
Unity底层是如何处理C#的
C#的发展历史C#没有出来之前,当时Java凭借Java虚拟机+Java字节码解释执行,让Java代码移植编写可以跨平台运行。同时Java等有了垃圾回收机制等,大大的降低了开发的难度。微软为了应对Java,推出了.net平台。.net平台包含了几个点正在上传…重新上传取消c开发一个.net虚拟机能解释执行CLR字节码,同时把.net虚拟机移植到多个平台(windows,winmobile等windows系的操作系统)。Unity为什么用C#...原创 2022-08-01 10:32:49 · 2561 阅读 · 0 评论 -
Lua,ILRuntime, HybridCLR(wolong)/huatuo热更新对比分析
这两年,各种Unity热更新方案如雨后春笋般出来了,今天来写篇文章来对比一下Unity各大热更新方案的优缺点。目前主流的Unity热更新的方案有(1)可热更的代码的范围;(2)发布新版本的时,新版本的性能与老版本热更;(3)热更解释执行效率的对比分析;(4)哪种方案更符合开发者的开发习惯;可热更的代码的范围对比Lua,方案都是项目种内置Lua虚拟机,它能热更的范围是使用Lua开发的所有脚本都可以热更,C#开发的代码可以通过提前的hotfix来做热更补丁。新版本的性能与老版本热更。...原创 2022-07-29 08:57:54 · 696 阅读 · 0 评论 -
打造基于ILRuntime热更新的组件化开发
Unity开发习惯里面是GameObject类来添加组件,这里GameObject是一个natviec#对象,所以必须要想其它的办法,这里我加了一个ILRBeahviourMgr的全局单例,用来做ILRBehaviour组件实例的添加,查找,删除。实现完这些机制以后,我们就完整的设计了一套基于ILRBehaviour的组件化开发机制,它尽可能的复合之前Unityc#的Mono的开发习惯,这样其它小伙伴就可以无缝的来在热更项目中做开发。所以子类重载接口函数的时,加上override关键字。...原创 2022-07-28 10:19:04 · 249 阅读 · 0 评论 -
益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计
益智类的游戏非常有意思,但是它的关卡设计并不容易,看上去是随机,同时难度又要由简到难的按顺序增加,同时还要有标准的提示的解法,本节給大家分享一类益智类游戏的关卡设计的解决方法,这个方法我称为逆推法。逆推法适应的场景举例首先举2个经典游戏例子来看下逆推法适用的游戏场景。首先我们来看《拼图游戏》的关卡设计,《拼图游戏》在做关卡设计的时候,大家可能觉得会很简单,只要把图片分成若干的块,然后随机打乱就可以了,这样一个关卡就做完了。那么问题来了(1)如何保证能让难度是按照由低到高的顺序一关关的递增呢?。...原创 2022-07-27 14:14:39 · 663 阅读 · 0 评论 -
Unity教程:URP渲染管线实战教程系列【1】
游戏是从PC端游发展起来的,我们拿传统的向前渲染管线中的光源来距离,向前渲染管线支持任意多的重要光源,每个重要光源,Unity都要基于这个光照来绘制一次物体,这样导致pass次数非常的多,性能消耗开销非常大,于是就有静态光照,静态烘培等。这个时候,就需要开发者做一个权衡和选择,在特定的满足手游开发需求前提下,最大限度的提升性能,于是URP渲染管线就出来了,他假定了一些特定条件如主光源只能是平行光,其它的附加光源在配置文件中限定数目,在一个pass内处理完所有的光源与光照计算。...原创 2022-07-25 15:04:33 · 4661 阅读 · 1 评论 -
Unity框架设计系列:Unity 如何设计网络框架
在Unity框架设计中与游戏服务器对接的网络框架也是非常重要的一个模块,本文給大家分享如何来基于Unity来设计一个网络框架,主要的讲解以下几个点这里有个大家可以一起学习交流TCP是可靠的网络传送协议,网络传输底层每发送一个,就要等对方确认,收到确认消息以后才能发下一个。当我们在应用层发送一个应用层的数据包的时候,TCP网络底层可能会把这个应用层的数据包分成若干””,通过网络底层发出去。”。”。。如果发送数据先建立连接,数据发送完毕后,马上关闭连接,下次要发送数据重新建立连接,这种叫做””。。...原创 2022-07-22 10:37:37 · 2574 阅读 · 0 评论 -
Unity手机游戏性能优化系列:针对CPU端的性能调优
做手机游戏开发的时,经常会遇到手机游戏的性能问题,手机游戏的性能问题可能有很多的方面,今天我们从CPU调优的角度来給大家介绍一下常用的CPU调优的一些经验和手段。这些经验和手段都有可能随着时间与环境的变化改变而改变,具体还是要以实际的为准,先定位性能问题,再上具体的手段。接下来我们从CPU的性能调优的角度来总结一下Unity手游开发中需要注意和优化CPU的一些点。我们把手机游戏的CPU调优分成几个模块,列举一下每个模块的一些经验,供大家参考。模块如下:渲染模块是游戏开发中的性能大户,首先建议开启多线程渲染模原创 2022-07-21 14:25:29 · 2110 阅读 · 0 评论 -
Unity shader forge和自带的shader graph,有哪些优缺点?
shaderforge/shadergraph是Unity的Shader图形化编程工具。所以从一个游戏开发老兵的角度来说,还是建议大家手写shader,等基础打牢固以后再使用图形的shader开发工具。这个尤其在shaderforge里面表现明显,往往做出来效果以后还要打开生成代码,在核对一遍shader效率,Shadergraph这种可视化的工具毕竟是自动生成shader代码,生成的shader代码可能性能并不好,还是要搞定基本的底层原理才能写出好的shader,所以建议shader初学者,...原创 2022-07-20 11:30:12 · 668 阅读 · 0 评论