![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unity
文章平均质量分 62
程序员牛哥
编程10年,互联网创业者,技术作家。专注技术变现。本博客会输出我经历过的故事、开发教程、从业经验、源码推荐等内容。希望能够对大家有所帮助。
展开
-
说说我理解的ECS
总体来说我觉得ecs最大的优势是带来,内存的有序分配,不会形成很多零碎的内存碎片,性能是一个比较重要的指标,还有就是可扩展性,需要用到哪个组件就去加载哪个组件,而不是之前的面向对象的继承,但是这个其实没啥,面向对象也能做到目前,最大的优势还是性能的提高。通过将游戏对象分解为实体和组件,以及使用系统来处理这些组件,可以更好地管理游戏的复杂性,并实现高性能的游戏系统。3. **可维护性:** 由于组件和系统是独立的,不同的开发人员可以专注于不同的部分,使得代码更易于维护。好了,我们下面来说说ECS的优缺点。原创 2023-07-21 11:39:30 · 323 阅读 · 0 评论 -
《软件设计的哲学》第三章 工作代码是不够的
Facebook 作为一家公司已经取得了令人瞩目的成功,但是由于该公司的战术方法,其代码库受到了影响。随着时间的流逝,该公司意识到其文化是不可持续的。最终,Facebook 改变了座右铭,即“以坚实的基础架构快速移动”,以鼓励其工程师在良好的设计上进行更多的投资。要考虑的另一件事是,公司成功的最重要因素之一就是工程师的素质。降低开发成本的最佳方法是聘请优秀的工程师:他们的成本不会比普通工程师高很多,但生产率却高得多。好的设计不是免费的。幸运的是,好的设计最终会收回成本,而且比您想象的要早。原创 2023-04-29 16:31:44 · 75 阅读 · 0 评论 -
unity ECS简介
组件是Unity ECS中描述游戏对象属性的基本单元,每个组件只描述一个属性。实体是游戏对象的标识符,组件是游戏对象的属性,系统是对实体和组件的操作。Unity ECS是Unity引擎中的一种高性能游戏开发架构,它采用了基于数据的设计思路,与传统的面向对象编程不同。面向数据:ECS是一种基于数据的编程模型,它着重于描述游戏对象的属性和行为,而不是游戏对象本身。内存布局:ECS使用紧凑的内存布局,使得游戏对象的数据可以更快地被访问,从而提高了游戏的性能。创建实体后,可以通过实体管理器给实体添加组件。原创 2023-03-07 08:34:43 · 5133 阅读 · 0 评论 -
游戏通用解决方案之红点设计
管理红点状态:每个节点需要维护一个红点状态,表示该节点的红点是否需要显示。例如,当任务完成时,需要更新任务节点的红点状态,并递归更新其父节点的红点状态,直到根节点。例如,根节点可以代表游戏主界面,子节点可以代表不同的游戏模块或功能,进一步的子节点可以代表具体的任务或邮件等。可以通过Unity的UI组件来实现红点的显示和隐藏,例如通过SetActive()函数控制红点图标的显示和隐藏。监听数据变化:为每个节点添加一个数据监听器,当该节点所依赖的数据发生变化时,会触发相应的监听器,从而更新红点状态。原创 2023-03-06 10:59:56 · 1033 阅读 · 0 评论 -
unity里面的一套简单buffer和技能
unity里面的一套简单buffer和技能。原创 2023-03-05 21:15:32 · 250 阅读 · 0 评论 -
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
sampler2D是一种表示纹理的类型,_MainTex、_BrushTex是两个纹理变量,_MainTex_ST、_BrushTex_ST表示纹理的缩放和偏移量,_BrushScale、_BrushColor分别表示画笔的缩放和颜色。在片段着色器中,我们首先获取当前像素的纹理坐标uv。然后,我们将画笔大小转化为纹理坐标系统中的大小,计算出当前像素到画笔中心点的距离,如果距离小于画笔大小,则将该像素的颜色设置为画笔颜色。在Shader中添加绘画函数:在Shader中添加一个绘画函数,用于在材质球上绘画。原创 2023-02-24 03:17:57 · 1181 阅读 · 0 评论 -
重读《DOOM启世录》
许多游戏开发者都是网瘾少年,抱着对游戏的热爱进入游戏行业,在经历996的加班加点,买房的压力,浮躁同样跟随着我们,我们是否还热爱着自己的事业,我们不是天才,也成不了卡马克,但是我们最起码要有自己的作品,自己的一点点小成就,这样说起来我们也是不枉此生。原创 2023-02-22 21:20:41 · 738 阅读 · 0 评论 -
Unity UGUI如何计算drawcall
UGUI在合批之前,会根据ui的Depth、MatID 、ImgID、RendererOrder进行排序,之后对相邻的UI进行检测,判断ImgID和MatID是否相同,如果相同则可以进行合批处理,如果这两个UI的MatID和ImgID都相同,但是不连续,中间有其他不同MatID或ImgID的UI则会打断合批。深度排序之后,就会根据matID进行排序,如果材质相同则对ImgID进行排序,如果也相同,那会根据inspection面板上的RendererOrder,最后真正进行UI的合批。原创 2022-10-09 19:41:56 · 797 阅读 · 0 评论 -
《unity游戏优化》第8章内存优化
8.闭包很危险,匿名方法和lambda表达式可以是闭包,但不能总是闭包,取决于方法是否使用了它的作用于和参数列表之外的数据。7.协程会消耗少量内存,直到调用yield,避免产生太多短信时间的协成。4.通过引用传递引用类型,可以修改原始的引用的对象数据集。4.对字典键使用obj.GetInstanceID();3.通过值传递引用类型,就可以修改原始引用的对象。1.struct是指类型,class是引用类型。2.通过引用传递值类型,可以修改传入的原始数据。1.通过值传递值类型,只能修改其数据的副本值。原创 2022-10-07 11:55:15 · 905 阅读 · 0 评论 -
《unity游戏优化》第六章读书笔记
优化移动设备的渲染性能避免alpha测试,消耗资源,利用alpha混叠来避免最小化drawcall最小化材质数量最小化纹理大小 1024*1024确保纹理是方形且大小为2的幂次方着色器尽可能使用最低的精度格式原创 2022-10-07 10:22:26 · 953 阅读 · 0 评论 -
unity中的渲染优化技术
过多的drawCall 使用批处理技术来减少drawCall数目复杂的脚本或者物理模拟原创 2022-09-27 23:55:27 · 928 阅读 · 0 评论 -
《unity游戏优化》第一章读书笔记
5.Update,Coroutines 和InvokeRepeating。从GameObject中检索字符串属性是另一种意外跨域本机-托管桥接。7.避免从GameObject取出字符串属性。当然,只有这些计算都生成相同的结果,才有效。多个对象共享某些计算结果,可节省性能开销。6.更快的GameObject空引用检查。1.使用最快的方式获取组件。2.移除空的回调定义。原创 2022-09-26 20:58:30 · 348 阅读 · 0 评论 -
Unity Dotween使用优化,1ms优化
最近在继续做性能优化,后续空下来尽量总结一些小的优化点分享出来。这些都不是大的优化,只是积少成多的改善。转载 2022-09-23 00:20:12 · 1096 阅读 · 0 评论 -
子线程渲染技术和AC自动机
原因:在玩家较多,且时装坐骑等差异化较大时,客户端帧率低,卡顿明显思路:将渲染放在子线程进行,使逻辑处理和渲染可以同时进行,提高并行处理能力,提高客户端运行效率,提升帧率,缓解卡顿原创 2022-09-22 11:23:53 · 228 阅读 · 0 评论 -
Unity优化之Drawcall
一、什么是Drawcalls在Unity中,每次CPU准备数据并通知GPU的过程就称之为一个DrawCall。这个过程会指定一个Mesh被渲染,绘制材质。二、Drawcalls有什么影响为了CPU和GPU可以进行并行工作,需要一个命令缓冲区,由CPU向其中添加命令,然后由GPU从中读取命令,这样就实现了通过CPU准备数据,通知GPU进行渲染。在每次调用DrawCall之前,CPU需要向GPU发送很多内容,主要是包括数据,渲染状态,命令等。所以如果DrawCall数量过多就会导致CPU进行大原创 2022-09-20 22:48:19 · 8052 阅读 · 0 评论