首页
学习
活动
专区
圈层
工具
发布

一文搞定手游内存优化

在项目发展阶段,工作重心在增量内存优化上。 在这个阶段需要对测试流程,内存分析工具和业务代码逻辑进行优化。...下面是Unity手游项目的具体实践:项目的内存数据以iOS为主,联合XCode工具链+Unity工具链+第三方工具链实现内存数据采集分析工作。...对于第三方SDK和Unity引擎框架自身的内存,一般的做法是使用hook的方式。 Android平台使用plt Hook方式进行hook。...这样子做有2个用处:1、这样子过滤之后堆栈的缩进是一致的,可以按照缩进处理堆栈的层次关系。2、可以减少堆栈数量,提高操作效率。...MemoryClawer本身还提供了很多能力,可以帮助定位小内存,内存碎片问题。MemoryClawer提供源码,方便接入和扩展。

31010

暴露程序猿身份的8个行为

当然,还有一些约定俗成的编程规范,如代码缩进(是缩进4个字符还是8个字符)、注释风格,采用骆驼式(CamelCase)或帕斯卡式(Pascal)来命名变量或函数等等。...(缺乏锻炼->吃得过多->生活方式不健康) 4.试图优化任何事情 职业原因:软件开发者会不断地优化自己的代码,让它越来越快、越来越高效。...日常行为:程序员也经常是过于认真,不放过任何小细节,“打破沙锅问到底”,这有时会给周围的人造成压力。...6.希望人们都和电脑一样循规蹈矩 职业原因:计算机会按照程序设定的方式运行,运行出错,那就是程序出Bug了。...日常行为:程序员有时会忽略人们是和电脑不一样的,人不可能完全按照逻辑和理性来做事,更多的是“跟着感觉走”。

42310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    编程中老生常谈的【编码规范】你还记得多少?进来回顾一下吧【文末送书】

    博客主页:https://xiaoy.blog.csdn.net 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 学习专栏推荐:Unity精品学习专栏 游戏制作专栏推荐:...但是就 编码规范 而言,可能大多数程序员都是按照自己的长久习惯进行代码编写,并没有遵循一个约定好的编码规范。...代码中当且仅当私有成员可以使用下划线_开始 代码中的命名严禁使用拼音与英文混合的方式,更不能允许直接使用中文的方式。 常量命名全部大写,单词间用下划线隔开,力求语意表达完整清楚,不要嫌名字长。...完全没有注释的大段代码,对于阅读者形同天书,注释是给自己看的,即使隔很长时间,也能够清晰理解当时的思路; 注释也是给继任者看的,使其能够快读接替自己的工作。...线上故障有时候就是来源于这些标记处的代码。 1)待办事宜(TODO):(标记人、标记时间,[预计处理时间])表示需要实现,但目前还未实现的功能。

    1.1K30

    一周极客热文:一位码农的几点思考

    微软要做一个产品的额外工作是很大的。 三、 python十分钟入门,简洁明了~ Python(蟒蛇)是一种动态解释型的编程语言。...Python代码块使用空格或制表符缩进的方式分隔代码。 Python仅有31个保留字,而且没有分号、begin、end等标记。...Python是强类型语言,变量创建后会对应一种数据类型,出现在统一表达式中的不同类型的变量需要做类型转换。...四、 F8大会不能错过的精彩看点:推新移动广告形式 三年时间,Facebook转型成为一家移动企业。 Facebook立下两大承诺。...Facebook承诺在48小时内修复所有重大故障。这是一项重大承诺,我们认为,我们有能力开发出一个更加稳定的平台。 以人为先。——Facebook另一个新座右铭。

    859100

    基础渲染系列(九)——复合材质

    为了保持代码的整洁,对GUI的不同部分使用单独的方法。从主要部分及其标签开始。 ? ? (主贴图标签) GUILayout如何工作? Unity编辑器是使用Unity的即时模式UI创建的。...这是Unity的旧UI系统,在当前基于Canvas的系统之前,它还用于游戏中的UI。 即时模式UI的基础是GUI类。它包含创建UI小挂件的方法。你需要使用矩形来明确定位每个元素。...(缩进属性) 1.7 展示次要贴图 次要贴图的工作方式与主要贴图相同。因此,创建一个DoSecondary方法,该方法可以处理粗体标签,细节纹理及其平铺和偏移。 ?...如果要以其他方式确定金属值,则只需更改GetMetallic。 2.2 自定义GUI 如果我们仍然使用默认的着色器GUI,则金属贴图将出现在检查器中。...(电路具有正常工作的光照,受光VS不受光) 发出的光会照亮其他物体吗? 自发光仅是材质的一部分。它不会影响场景的其余部分。但是,Unity的全局照明系统可以拾取此发出的光并将其添加到间接照明数据中。

    4.2K10

    在家办公心不慌,运维请收好这几个远程管理软件

    “我倒是想在家办公 但服务器/存储不能搬回家啊...” ? 这时候,远在天边的数据中心 就如同一只薛定谔的猫 处在故障和正常的叠加态当中 时刻牵动着运维人员的小心肝~ ?...其实,这样的情况不止在特殊时期,即使在正常时期,运维人员也很难做到时时刻刻监测数据中心里的每一个设备,很多时候,只有在故障出现后才着手解决问题,这就导致了巨大的业务风险。 ?...主要特点: ❖ 同时监控戴尔易安信服务器、存储、交换机设备的健康状态; ❖ 设备出现故障时,能够主动报修,并创建CASE,加快故障处理速度(此解决方案是ProSupport和ProSupportPlus...有了Support Assist,在节假日的时候,运维人员可以放心地和家人享受生活,不用担心设备出现故障,没能及时维修而对业务带来严重的影响。...随时待命的戴尔易安信工作人员 现在,小编可以拍胸脯地说,只要你能灵活运用以上工具,安心休息去吧,绝大部分隐患都能排除在外。即使遇上严重突发事件也不用担心,遍布在全国的戴尔易安信工程师是你的坚强后盾!

    91430

    Unity基础教程系列(七)——可配置形状(Variety of Randomness)

    但是我们不能使用FixedUpdate,因为不管如何,Unity都会调用同名方法,所以必须将其重命名为其他名称。这里我们修改为GameUpdate,并将其公开,以便Game可以访问它。 ?...(形状按照Forward方向运动) 对于球形和立方体区域,这可以按预期工作,但在使用复合生成区域时,则无法工作。因为它使用复合生成区域本身的forward方向,而不是其子区域的forward方向。...为了使此工作有效,就像对SpawnPoint一样,CompositeSpawnZone必须重写ConfigureSpawn才能将调用转发到其各个子区域。可以从该属性复制代码,仅在最后更改其功能即可。...这告诉Unity将其与所有其他与编辑器有关的代码进行编译和组合,并使其脱离构建。 ?...(重新设置标签大小) 看起来已经不错了,但这仅是因为我们的范围字段最后缩进了一步。Unity全局跟踪UI缩进,但是我们可以通过设置EditorGUI.indentLevel属性来覆盖它。

    3.4K30

    如何解决 PyCharm 报错 “TabError: inconsistent use of tabs and spaces in indentation” 问题

    如何解决 PyCharm 报错 “TabError: inconsistent use of tabs and spaces in indentation” 问题 在编写 Python 代码时,我们有时会遇到这样一个报错...而这个错误 TabError: inconsistent use of tabs and spaces in indentation 通常出现在缩进方式不一致时。...复制的代码可能使用了不同的缩进方式,如果不注意,粘贴的代码和你编写的代码就会出现不一致的缩进,从而触发 TabError。 解决方案 1. 保持一致的缩进习惯 最直接的解决方案就是养成统一的缩进习惯。...PyCharm 将根据你设定的缩进规则自动修复代码中的缩进问题。 3. 修复粘贴代码时的缩进问题 如果你从外部复制并粘贴了代码,可能会出现缩进不一致的问题。通常,粘贴的代码会带有不同的缩进设置。...确认团队的编码规范 如果你在团队中工作,确保所有成员都遵循相同的编码规范和缩进方式。团队可以在项目中统一使用 .editorconfig 文件,来确保每个开发者的编辑器都有统一的设置。

    1.4K10

    《拆解Unity3D开放世界游戏中动态天气与粒子特效协同的内存泄漏深层问题》

    然而,在实际开发过程中,一种极具破坏性的“内存泄漏叠加”故障却频繁出现,给开发团队带来了巨大困扰。...,这一特性给故障的排查工作增加了极大的难度。...在粒子特效系统的搭建方面,核心粒子效果采用Unity内置的Particle System结合“GPU Instancing”批量渲染技术,这种渲染方式能够有效减少Draw Call数量,提升粒子特效的渲染效率...在内存泄漏特征的拆解方面,开发团队通过Unity Profiler的“Memory”模块对内存占用进行了细分监控,将内存按照“纹理内存”“Mesh内存”“代码堆内存”“引擎内部内存”进行分类统计。...在故障触发条件的精准验证环节,团队搭建了4组对照测试场景,通过“开启/关闭某一功能”的方式,观察内存变化情况,以此确定故障触发的核心条件。

    16200

    零基础入门 4: 窗口介绍(完)

    剩余窗口介绍按照下图顺序进行讲解 ?...打开方式: 1、window菜单栏打开 2、快捷键打开,Ctrl+7(Windows)Command+7(Mac) 当我们在实际工作中,经常会需要查看当前运行期间的一些调试工作,比如说查看当前场景内的DrawCall...打开方式: 1、window菜单栏打开 2、快捷键打开,Ctrl+9(Windows)Command+9(Mac) 打开AssetStore需要连接Unity资源商店服务器,有时会因为网络原因导致无法打开...如果项目需要构建自动测试等,可以到Unity的官方网址创建 https://build.cloud.unity3d.com/ ? 点击窗口中的Create即可创建一个测试代码。...---- 今天的内容可能有些多,不过Unity自带窗口介绍就这篇和上一篇,所有的窗口介绍内容已经结束了,但是既然说有彩蛋,就不能食言。

    1.8K20

    你的前端代码多久没有检查过了?

    代码检查很重要,原因有三: ---- 避免低级bug:一些常见代码问题,如果在编译或运行前不能及时发现,代码中的语法问题会直接导致编译或运行时错误,影响开发效率和代码质量; 统一代码习惯:每一个团队或个人都会有一些代码规范或者代码习惯...,为了便于后期维护和阅读,我们编写的代码也需要符合一定的格式规范; 保证线上代码质量:在版本管理中,我们需要在提交或发布之前自动执行一些代码检查工作,确保我们的代码符合最终版本要求。...代码质量 你的代码是否遵循团队要求的代码规范(大括号的位置,变量名和函数名,行的长度,缩进,格式和注释)? 是否有冗余代码没有注释掉或者删掉?...测试 代码逻辑是否正确、可用、符合需求? 在进行各种操作的时候,是否有报错出现? 是否有资源加载出错或者失败? 是否按照项目要求,使用相关设备以及浏览器进行测试和体验?...故障处理 是否考虑过如果发生线上故障,如何做回滚处理?处理什么文件 功能与功能之间是否足够独立?是否设置开关?当某个功能发生故障是否可以通过开关关掉?

    85030

    ​CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

    问题:人越来越多,代码越来越乱 [3ucio6rlom.png] 随着团队成员增多,每个人在缩进、换行、空格以及大小写方面有不同的习惯,导致代码越来越乱。...[59kfodm0fv.png] 代码规范不只是缩进换行问题,通过强制约束圈复杂度、文件行数和方法行数,可促使大家按照面向对象的方式设计。 如何强制执行代码规范 有了代码规范,但怎么落地?...流程为:锁定 Git 主干,所有人开发功能拉取小分支,小分支提交后触发持续集成进行代码规范检查,通过之后再通知同事进行代码评审,通过这套流程来提高代码质量。...而 ToB 项目初期出现了严重 bug 可能就要赔偿客户,因此初期就需要自动化测试。...代码质量评级标准:从下图中可以看到,“优”级别的代码质量标准圈复杂度最多允许 5,类行数不能超过 50,函数行数不能超过 10,测试覆盖率需达到 90%。

    1.1K10

    Unity手游实战:从0开始SLG——Unity目录分布(Asset权限规划)

    当然其实你也可以使用代码裁切来剔除你不需要的库和代码,但这个使用场景有限定,并且也不能剔除Unity自身的代码库。...Packages 这个目录是2018新增的,Unity自动生成的Project是不能直接对这里进行管理和修改的。同时,Unity的引擎在工作目录里也是没法对它进行操作的,是一个只读的目录。...Assets 这是是Unity的主工作目录,这么多年一直都没变的,是Unity工作的基石。任何资源只有放在这个目录下才能被Unity识别和管理,不管你是纹理、模型、地形、声音、特效、代码、文本等等。...不过如果有些项目美术人员对Unity确实不熟悉,并且资源也确实不需要在Unity下工作的话,也可以通过外链方式管控(比如UI切图)。 Data ?...这个是客户端内部的代码文件,这里要注意的是ECSBattle和ECSBattleView两个目录。之前也有提到,我们的战斗是逻辑和表现分离的方式,所有的逻辑层可以在脱离表现层的情况下独立工作。

    1.5K20

    【Unity面试篇】Unity 面试题总结甄选 |Unity性能优化 | ❤️持续更新❤️

    因为需要额外维护多一份数据,所以包体会变大,占用的内存也会变多(不能有超级大量的相同模型(如:森林里的树)) 7.动态合批 如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。...原理:Unity会检测哪些GameObject使用了同一个共享材质,然后去合并这些使用了同一个共享材质的网格顶点数据,形成一个新的大网格,然后传给显存,直接渲染这个大网格就相当于渲染了所有的被合并的小网格...GPU端性能优化小知识点 合理规划好渲染顺序,避免不必要的overdraw,如:地形(容易被其他物件遮挡)、天空盒放到较后渲染. 分辨率缩放,对于填充率出现瓶颈时,这个是最简单高效的....Unity自带的遮挡剔除因为CPU消耗和内存占用较高,加之不能Instancing,不太适合移动平台,可以考虑静态预计算(缺点是不支持动态物体)、Hi-Z等优化方案....微信搜索:呆呆敲代码的小Y 回复:白嫖 免费获取很多的编程资料哦! ---- 总结 全网最全的 Unity性能优化 面试题都在这里了,希望本篇文章能够让你在面试关卡如鱼得水得到自己想要的工作。

    3.6K32

    《Unity+腾讯云TRTC故障排查指南:从日志盲区到线程死锁的全链路解析》

    故障最初在内部测试阶段被发现,表现为部分玩家在团战场景下出现语音卡顿,卡顿时长通常在1-3秒,卡顿期间玩家只能听到断断续续的声音片段,且卡顿结束后往往伴随语音延迟显著增加的问题,延迟从正常的50毫秒左右飙升至...并未明确指向TRTC相关模块,这给故障排查工作带来了极大的挑战,也让团队意识到问题的复杂性远超初期预期。...为了避免因“单一现象误判”导致排查方向走偏,团队通过收集玩家反馈、搭建模拟测试环境复现故障、深入分析各类日志数据等方式,梳理出故障的三个核心特征,这些特征成为后续精准定位根因的关键线索。...,这一测试结果明确表明故障与Unity引擎的“多任务资源竞争”存在直接关联,而非单纯的语音模块问题。...的“资源加载子线程”CPU占用率会同时飙升至90%以上,而Unity主线程的CPU占用率也从正常的30%左右升至70%,明显出现“线程资源抢占”的迹象,这为后续排查提供了重要方向。

    20910

    《Unity项目实战:动态加载引发的显存危机全链路排查与重构实践》

    当我们满怀信心地将凝聚无数日夜心血精心调校的游戏客户端推向全球玩家时,起初的一切似乎都在按照理想轨迹平稳前行。...其中最引人注目的是,每次帧率崩溃前,总会观察到特定几个工作线程进入同步阻塞状态。这一现象清晰表明,并非简单的资源不足,而是存在复杂的线程协作问题。...通过对比正常流程与故障场景的线程快照,我们震惊地发现,在处理混合输入事件时,Unity音频模块的AudioSource组件与物理引擎的FixedUpdate循环形成了交叉等待环路。...毕竟,在实际运行环境中,各个子系统是紧密交织、协同工作的。为了攻克这一难关,我们大胆创新,采用了可控混沌测试法。...这种方式不仅使线程模型更加清晰,而且显著提升了系统的抗压能力。其次是资源加载体系的革新。

    16900

    unity程序使用云渲染技术是否要修改?

    在和客户沟通的过程中,点量小芹发现很多客户对于使用实时云渲染技术后,程序可以在手机或者平板中使用,是否需要对程序进行修改以适配在手机中使用?...这种方式有很多好处,对用户来说使用方便,不需要因为设备性能更不上而不能使用,而且操作也简单了不需要在安装程序。...虽然安装不难,但是在安装的过程中因为个人对电脑的熟悉度不同,电脑的系统品牌不同而可能出现各种问题。使用这种方式基本不会存在这个问题。而且可以打破时间和空间对使用程序的限制。...这是因为云渲染系统,对于操控方式是键盘或者鼠标的Unity或者UE4程序,会在手机中模拟出鼠摇杆和软键盘,这样就可以像在电脑上一样完成交互了。当然如果手机或者平板能连蓝牙,也可以外接鼠标完成交互。...所以使用实时云渲染技术是无需对现有程序做修改的,程序在Windows使用是如何建模的,还是按照原来的方式建模即可。 shouji-yunxunran.png

    1.3K20

    Unity Odin从入门到精通(二):创建编辑器窗口「建议收藏」

    6.创建编辑器窗口的流程:如下所示: 6.1.首先创建一个C#脚本文件;然后在该脚本文件里面使用UNITY_EDITOR宏来包含脚本代码,从而让该脚本代码只有在编辑器环境下才起作用。...3.创建菜单树编辑器窗口的流程:如下所示: 3.1.首先创建一个C#脚本文件;然后在该脚本文件里面使用UNITY_EDITOR宏来包含脚本代码,从而让该脚本代码只有在编辑器环境下才起作用。...其中,菜单项用到的缩进等级就是参数值;子菜单项用到的缩进等级就是参数值加一。 4.7.DrawMenuItem:用指定的缩进等级来绘制菜单项。...当用户点击该按钮时,首先会将当前的样式设置以代码段的形式复制到剪切面板当中,然后用户就可以将剪切的代码段粘贴到代码文件当中。 OdinMenuTree:它是Odin中的菜单树类型。...其中,比较函数的执行流程大致为:当placeFoldersFirst参数值为true时,首先就会对菜单项列表按照菜单项是否含有子菜单项来排序,然后再按照菜单项的名称进行排序。

    4.4K30

    Python的textwrap库:文本包装的艺术

    Python标准库中的textwrap模块正是为此而生,它提供了一系列简单而强大的工具,帮助我们优雅地完成文本包装和格式化工作。...3. dedent 在处理文本时,有时会遇到缩进的问题。例如,从文件中读取的文本可能包含多余的空格或制表符。...处理特殊字符 在文本中,有时会遇到需要保留的特殊字符,如换行符、制表符等。textwrap库允许我们通过参数控制这些字符的处理方式。...# 示例:自定义断行逻辑 long_word_text = "这是一个非常长的单词,它不能被拆分。"...无论是编写代码注释、生成报告文档,还是处理用户输入和输出,textwrap库都能为我们提供有力的支持。希望本文能够帮助你更好地理解和使用textwrap库,提升你的文本处理能力。

    17010
    领券