8.4k 8 分钟

# 前言 前几天 Unity 公布了新的 收费政策,然后整个开发者社区都沸腾了,处处都是 讨论的声音,不管最后实际生效政策如何 (2023.9.18 官方似乎更新了公告,说会对『运行费』政策进行修改),这种杀鸡取卵的行为必然都会造成以后开发选择的考虑点。 之前本来还打算专一 Unity 的,比如前些日子都还一直在研究 HDRP,算是基本把 HDRP 物理光照、各种调参熟悉得七七八八了,结果就听到这么个消息... 简直是... 如果真的实施,人家独立开发只怕都会把这个作为一个很大比例权重考虑进去了,毕竟哪个游戏开发者没有想做个好玩 (爆款) 的大作的梦想呢? 之前一直都关注 UE,比如 UE...
11k 10 分钟

# 前言 本文包含原书第七章至第十五章,也就是本书最后一部分。 主要为对象资源释放、线程局部存储、托管指针、ref 类型、非托管类型、非托管约束、 Span<T> 、 Memory<T> 、Unsafe 类、面向数据设计 等高级主题。 这是本书的最后一份笔记,没想到整体看完这本书花了 2 月有余... 说来惭愧,这两个月花了太多时间在其它东西上去了:玩游戏,比如最近的蔚蓝档案、或者在家看 HDRP 相关的教程。 虽然除了玩游戏也不能说全无相关,但确实是这次没有专心看书了,导致时间线被严重拉长 ——...
6.9k 6 分钟

# 前言 本文包含原书第七章至第十一章,主要为 .NET 垃圾回收过程的详细描述 # 第七章 垃圾回收 - 简介 # 高层视图 .NET GC 的两种模式: 工作站模式:最大限度减少 GC 引入的延迟,GC 频率更高 非并发:GC 时应用程序所有托管线程都挂起 服务器模式:最大限度提高应用程序的吞吐量,GC 频率更低 并发:GC 的某些部分在托管现在还在工作时执行 # GC 过程示例 垃圾回收是在特定代的上下文中发生,该代称为被判决的代。 可决定同时回收比当前被判决代更小的代 # 第 0 代被判决的垃圾回收: 仅检查第 0 代中对象的可达性 第 0 代变为空...
5.7k 5 分钟

# 前言 本篇包含原书第五章和第六章,主要讲了 .NET 内存分区和内存分配方式 小对象通过指针快速分配 (多数情况下) 大对象通过空闲列表分配 (因此最好避免) 并提出了一些优化方式:避免分配,包括显式和隐式分配等 # 第五章 内存分区 # 分区策略 总体上有: 大小 生存期 可变性 类型 种类 简单来说,.NET 根据『大小』和『生存期』作为分区策略。 # 按大小分区 .NET 根据大小处理不同对象,分为两类: 小对象堆 (SOH):所有小于 85000 字节的对象在此分区创建 大对象堆 (LOH):所有大于或等于 85000 字节的对象在此创建 区别在于,默认情况下小对象堆在...
8.9k 8 分钟

# 前言 本篇包含原书的第三章和第四章,第三章主要讲了一些测试工具使用,我自己也看得也比较囫囵吞枣 (毕竟个人是搞 Unity3D,这块多数工具基本都是没用的,当然部分理论依然还是可以参考的)。 其次是第四章的 .NET基础知识 ,这一章名字说是基础知识,实际上还是比较深入的,比如各个字段的内存区域、详细描述了为什么值类型 更快 等等。评价是 比较重要 。 # 第三章 内存测量 # 尽早测量 与其过早地专注于优化,不如先测量评估一下我们是否有这方面的需求。 # 开销和侵入性 开销:额外消耗 侵入性:游戏应用程序本身功能 # 采样与跟踪 跟踪:诊断数据在特定的、被关注的时间触发时收集...
4.3k 4 分钟

# 前言 前两天公司其他同事在推荐让试一试 WXAssetBundle,看看性能是不是真的有所提升,然后顺便就看到微信官方推荐使用 Addressables 系统进行资源加载 (其实之前就有瞄到这文档,只是当时项目重点不在这,所以没怎么注意) 当然微信虽然推荐 Addressables ,也提到如果自己进行维护管理的 AB 包 性能肯定会比 AA (Addressables) 包更好 —— AA 包较大项目时生成的未压缩的 catalog...
5.7k 5 分钟

# 第二章 底层内存管理 # 硬件 处理器 (CPU):计算机的主单元,负责执行指令。包含算数逻辑单元 (ALU)、浮点单元 (FPU)、寄存器和指令来执行流水线 (负责高效执行被切分成一组更精简指令集的操作指令,并在可能的时候并行执行它们) 前端总线 (front side bus,fsb):连接 CPU 和北桥的数据总线 北桥 (northbridge):主要包含内存控制单元,负责控制内存和 CPU 之间的数据通信 RAM (随机存取存储器):也叫易失性存储器 内存总线 (memory bus):连接 RAM 和北桥的数据总线 南桥 (southbridge):处理计算机所有 I/O...
9.8k 9 分钟

# 前言 最开始是因为项目的一个问题:微信的 Unity 转小游戏,转出来的 XXXX.webgl.data.unityweb.bin.txt(首包资源文件) 文件极大,其中占据数量最多的是一系列的 MonoScript ,且经过对比检查,其它占用够大的 Shader、图片或冗余资源都被我一一处理过了,但是呢这个文件依然很大。 达到什么程度呢?公司其它项目转出来只有 7M,而我们的达到了 16M?!这正常吗?不正常吧! 最麻烦的一点是:经过 AssetStudio 打开看之后,排头的只有寥寥几个资源,而且都不算大: 与只有 7M 资源的对比, AssetStudio...
5.9k 5 分钟

# 前言 之前的几本书,都是 全都读完 之后,再将笔记从语雀转移到自己的 Hexo 博客上,但是想想一本书有多少?笔记就算记得再少也少不到哪里去。 这就导致一个问题:文字太多,自己都...em... 于是这次想转变一下思路和做法,感觉可以单独先『移记』一下的,那就先在整理到博客上。 # 第一章 基本概念 # 术语 位 (bit):小写字母 b 指代位 字节 (byte):使用大写字母 B 表示 随机存取存储器 (RAM):允许不管访问的存储器区域如何,都能在相同的访问时间内读取数据 非均匀访问存储器:与 RAM...
830 1 分钟

# 前言 前几天不是说趁着 618 买了做蛋糕的工具吗:烤箱、厨师机与电饭锅,这几天陆续到货之后,前后也试了三次了。 于是简单记录一下。 # 第一次 这是拷完的样子: 硬得像石头似的... 用筷子戳出来,简直就是... 比蛋糕饼都不如,而且一股腥味 🤮 (为了不浪费,还是含泪挖了些吃了) # 第二次 第一次失败之后,就再仔细查看了对应教程,以及效果、特别打发时间:想到第一次机器拿到手时,由于担心问题,只打发了 2~3 分钟吧?那肯定是不行的。 另外还有糖、面粉都是『盲放』,糖其实可以事先就跟蛋放一块一起打发。 于是第二次吸取教训,用勺子量了 24g 糖...