- 博客(180)
- 资源 (1)
- 问答 (5)
- 收藏
- 关注
原创 Unity Burst编译
Burst 是一个编译器,目的是把代码跑的更高效。主要优化技术密集的任务。LLVM的激进优化。SIMD向量化:循环操作转为单指令多数据指令。(一个加法变四个加法一起算)循环展开:if等分支展开,比如经常true的再优化。自动内联:把小函数自动内联展开。无GC检测:因为操作都是非托管数据,所以省去一些不必要的检测。2019年官方说的: Burst必须只能在JobSystem中使用,其他地方是不能用的。从 IL/.NET 字节码转换为使用 LLVM 编译器的优化原生 CPU 代码。
2025-03-01 15:12:42
990
原创 2D 游戏艺术、动画和光照
原文:https://unity.com/resources/2d-game-art-animation-lighting-for-artists-ebook。
2025-02-14 14:07:27
389
1
原创 ZLogger 高性能日志库
高性能;支持模板配置;可以动态生成日志代码的日志库。可以解决常见unity日志问题:根据级别开关日志。字符串参数装箱问题。日志屏蔽不全的参数导致没必要的调用。线程异步的日志。可扩展:输出多个文件,自动生成额外参数。
2025-02-12 16:56:34
806
原创 Git 源码编译,冲突对比异常排查
怎么编译git:https://stackoverflow.com/questions/28848870/how-to-build-git-on-windows。
2025-02-12 16:52:53
835
原创 Unity DOTS 介绍和应用
DOTS(Data-Oriented Technology Stack)面向数据的技术栈什么是DOTS?为什么说DOTS非常重要?通常游戏要处理大量数据时可以考虑用。用于核心战斗模块等,ui啥的不用考虑这些。截至目前(2024年9月),Unity Entity出到1.3+版本,ChatGPT的知识库最新是2023年10月,对应Unity Entities包是1.0+版本,有些差异,但大部分问题还是能教。子场景因为原来Unity场景不支持ECS组件,所以单独弄了个“子场景”来烘培ECS组件。
2025-02-12 16:31:49
1252
1
原创 垃圾回收 GC(Garbage Collection)
Unity 内存:https://docs.unity3d.com/Manual/performance-memory-overview.htmlUnity游戏开发 - 内存篇:https://zhuanlan.zhihu.com/p/533047433Unity增量GC:https://docs.unity3d.com/Manual/performance-incremental-garbage-collection.html。
2025-02-12 16:05:00
942
原创 Unity 代码编译名词解释
一般是ToLua、XLua自己在维护,比如Lua5.3之前不支持int64,即LuaJIT不支持int64,但是ToLua中有自己实现支持。是.NET的一种实现,开源的,Unity早期选择他,因为开源且跨平台比.NET多。运行时将 Lua 代码的编译成本地的机器码,然后直接在处理器上执行这些机器码,避免了解释执行的性能开销。项目打包Lua成AB前,会先编译一遍Lua成字节码,可以省去运行时解析编译原始Lua文件时间。运行时,JIT编译(Just-In-Time),编译IL代码成目标平台的机器码。
2025-02-12 15:59:46
939
原创 Unity Harmony 注入代码排查transform位置变化
代码存在直接使用原始等设置坐标,如果出现抖动或者其他位置异常,排查会比较困难,传统做法:C#约定所有设置坐标接口都用自己封装的。lua的话,因为是都是通过C# Wrap调用,可以在C#Wrap中加打印。极端点:改引擎源码重新编译。现在提供另一种思路,在所有C#代码改变坐标的地方,注入代码,实现监听所有改变坐标的代码调用情况。存在的问题:如果是动画或者物理控制等非自己加的代码,就无法检查到,可以提前排查。
2025-02-12 15:56:45
512
原创 Unity 编辑器热更C# FastScriptReload
用于运行时修改C#后能快速重新编译C#并生效,避免每次改C#,unity全部代码重新编译,耗时旧且需要重启游戏。
2025-02-12 15:43:28
486
原创 Unity 增量打包AssetBundle
官方表示:https://forum.unity.com/threads/about-incremental-build-and-asset-bundle-hashes.1436032/#:~:text=Finally%2C%20you%20mention,script%20or%20package.在机器只打一个包的环境下,30193个ab,刷新两次增量缓存,第二次打AB时间只要近两分钟。文件,在不同机器上,依赖的类是一样的,但顺序不一致,导致计算。文件,反之跳过的AB不会刷新AB和。
2025-02-12 15:41:34
886
原创 Unity 代码优化记录
Unity 修复性能问题:https://learn.unity.com/tutorial/fixing-performance-problems-2019-3?考虑判断原来一致不重复赋值考虑使用整形存储代替枚举。
2025-02-12 15:36:16
781
原创 游戏内常见加密
私钥是保密的,只存在于服务器上,Token 的生成由服务器负责,通常由原始用户身份信息 Identify 和签名两部分组成,用户身份 JSON 字符串,通过 base64 算法进行编码作为 Identify,由于 Identify 长度不固定,可用与客户端约定好的哈希算法进行运算,再用私钥进行签名。密钥是保密的,只存在于服务器上,Token 的生成与解析由服务器负责,客户端也无法解密 Token。加密:约定一个除数,每四个字节数据合并后除余,得到一个字节以内的余数,最后得到一个余数的数组。
2025-02-12 15:10:56
553
原创 常用数据格式:json、bson、msgpack
修改更快:json数据存储无类型,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。而使用BSON,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。类型定义:https://github.com/msgpack/msgpack/blob/master/spec.md。更紧凑:二进制存储数据,json是字符类型,bson有时间类型,二进制对象等,更省空间。
2025-02-12 15:08:47
347
原创 物理引擎Box2D
DOTS,软浮点物理引擎:https://github.com/Kimbatt/unity-deterministic-physics?Unity底下物理引擎就是Box2D,这里因为项目需要定点数物理引擎,就找了个抄过来定点数物理引擎:https://github.com/Zonciu/Box2DSharp-deterministicTrueSync里面的Farseer就是基于Box2D弄的 https://github.com/Genbox/VelcroPhysics。
2025-02-12 15:07:23
530
原创 时间轮计时器
权衡容量和最小精度:设定25ms一个槽位,一秒相当于40个槽位。但游戏内用计时器频繁的地方,比如buff,通常是好几秒,如果第一轮只记录一秒的任务,每过一秒,取出下一轮任务又要重新计算放在对应毫秒的槽位。扩大第一轮空间,记录10秒空间,如果要添加一个3秒任务,那就可以直接插入到第一轮,而不用插到下一轮,减少了每次轮次变化产生的重新计算。最大容量:先定了24小时,因为只是客户端用,暂时没想到有啥会超过一天的计时器。就算有,后面改下数组长度即可。
2025-02-12 15:05:46
340
原创 C# CultureInfo 地区影响字符串
线上遇到有玩家资源加载异常,发现资源路径出现异常字符:发现是土耳其语下字符串转小写不符合预期:->ı。
2025-02-12 14:47:06
978
原创 Unity崩溃和ANR排查
使用addr2line工具:https://stackoverflow.com/questions/5314036/how-to-use-addr2line-in-android。对比上个正常版本有什么差异,看有没有什么sdk更新,plugins,projectsetting更新等,回退相关可以回退内容,出包换线上包。3.设置->隐私->分析->分析数据,看修改时间取新的,找到“tw”(包名)相关文件,发过来。如果是安卓,客服有反馈,可以先同步运营,把apk给客服给玩家尝试。
2025-02-12 13:45:19
800
原创 Unity 卡死排查方法(游戏死循环、打包卡死)
unity2021.3.20f1目前打这种包会失败,提示代码量过大,后续unity2022升级NDK后解决,临时解决办法:https://forum.unity.com/threads/android-builds-failing-when-script-debugging-is-enabled.1027357/#post-7627372。查看当前unity的线程就可以定位什么问题了。打包需要勾选ScriptDebugging。打开线程窗口,调试->窗口->线程。只打arm64架构包。
2025-02-12 11:19:53
699
原创 热更图片方案
新增一个hotfix_img_mgr.lua,在config.lua require之后再初始化,方便后续热更调整3.1. 初始化时异步检查下载热更配置,注意容错:配置无,json.decode异常,配置缺"texture"等。3.2. 配置检查完异步下载图片资源,并缓存,下载超时时间根据图片大小(GetFileSizeWithUrl)设置超时时间,比如一个图1M,算较差情况100k每秒,1024/100=10s超时3.3. 旧包没导出’UnityWebRequestTexture‘ 接口,先加到导出
2025-02-12 11:02:25
388
原创 微端、语言包、补丁下载更新流程
微端:安卓上架应谷歌后台要求限制1G大小,所以只能用微端,另外微端有助于提升用户转化率:让玩家只需下载小包体就能进游戏,但其实进去完整体验还需要下载剩余资源。微端补丁:不同于整包补丁,是针对微端玩家更新的补丁,补丁内只带玩家前期微端所需的更新内容,所以补丁文件会更小,以提供转化率,文件后缀为。港台:最开始上的时候没有做语言补丁,目前台湾繁体资源是一起进包,没有语言包下载功能。韩服:韩服包只有一个韩语语种,简中也不支持,没必要搞语言包下载功能。安卓完整包:本文特指微端下载完exp包后的包体。
2025-02-12 10:43:17
332
原创 Untiy DLL断点无法命中问题, 手动转.pdb 为 .mdb 批处理
遍历当前目录索引DLL,执行Unity的pdb2mdb.exe工具for %%i in (*.dll) do ( F:/UnityHub/2019.3.2f1/Editor/Data/MonoBleedingEdge/bin/mono F:/UnityHub/2019.3.2f1/Editor/Data/MonoBleedingEdge/lib/mono/4.5/pdb2mdb.exe ...
2020-04-09 23:26:58
1260
2
原创 C#代码优化
C#代码优化参考书籍:《Effective C#》C# 托管资源和非托管资源:https://blog.youkuaiyun.com/zlwzlwzlw/article/details/7918633优先使用隐式类型的局部变量:即用var声明局部变量。考虑用readonly代替const。优先用is或as运算符,少用强转类型。用as把装箱的值类型转换成未装箱且可以为null的值类...
2020-02-09 19:39:40
1452
原创 游戏设计模式学习笔记(21)建造者模式
游戏设计模式学习笔记(21)建造者模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: http...
2019-10-06 16:25:12
538
原创 游戏设计模式学习笔记(20)工厂模式、抽象工厂模式
游戏设计模式学习笔记(20)工厂模式、抽象工厂模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云...
2019-10-06 15:53:36
585
原创 游戏设计模式学习笔记(18)访问者模式
游戏设计模式学习笔记(18)访问者模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: http...
2019-10-06 00:29:24
322
原创 游戏设计模式学习笔记(19)装饰模式、适配器模式、代理模式
游戏设计模式学习笔记(19)装饰模式、适配器模式、代理模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨...
2019-10-06 00:24:19
281
原创 游戏设计模式学习笔记(17)备忘录模式
游戏设计模式学习笔记(17)备忘录模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: http...
2019-10-05 22:28:50
205
原创 游戏设计模式学习笔记(13)桥接模式
游戏设计模式学习笔记(13)桥接模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: https...
2019-10-05 22:14:59
217
原创 游戏设计模式学习笔记(16)责任链模式
游戏设计模式学习笔记(16)责任链模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: http...
2019-10-05 22:09:09
323
原创 游戏设计模式学习笔记(15)模板模式
游戏设计模式学习笔记(15)模板模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: https...
2019-10-05 21:47:34
240
原创 游戏设计模式学习笔记(14)策略模式
游戏设计模式学习笔记(14)策略模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: https...
2019-10-05 21:17:27
265
原创 游戏设计模式学习笔记(12)中介者模式
游戏设计模式学习笔记(12)中介者模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: http...
2019-10-05 17:28:30
250
原创 游戏设计模式学习笔记(11)外观模式
游戏设计模式学习笔记(11)外观模式参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计模式】浅墨_毛星云: https...
2019-10-05 16:51:46
218
原创 游戏设计模式学习笔记(10)优化模式(数据局部性、脏标识、对象池、空间区分)
游戏设计模式学习笔记(10)优化模式(数据局部性、脏标识、对象池、空间区分)参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【...
2019-10-04 19:22:34
524
原创 游戏设计模式学习笔记(9)解耦模式(组件模式、事件队列、服务定位器)
游戏设计模式学习笔记(9)解耦模式(组件模式、事件队列、服务定位器)参考:《设计模式与游戏完美开发》《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)【游戏设计...
2019-10-04 16:57:58
421
git 支持关闭rename操作
2025-02-12
如果在C中调用C#函数并获取字符串的返回值给C。
2020-02-11
C/C++ 静态库的函数找不到 LNK2019 无法解析的外部符号 "int __cdecl Lib_Test(void)" (?Lib_Test@@YAHXZ),该符号在函数 _main 中被引用
2020-01-28
C++ defualt 与 自定义默认构造函数 是否完全等价。
2018-01-21
C++ 函数重复声明时,添加默认实参问题。
2018-01-16
const int a = 1; 和 const int &a = 1; 的区别
2018-01-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人