6.1k 6 分钟

# 前言 本来最开始只是因为 JsDeliver ... 又又又挂了,导致部分用到的 CDN 在家里访问不了 —— 本来上次就已经把大部分脚本引用从 JsDeliver 切换到 Staticfile 了,然而还是有少几个在 Staticfile 没有的导致没法换 然后就发现,一旦这『少数』脚本出了问题,网页就会一直卡在那儿等它... 等半天真的是 于是就想办法搞,比如 fancybox、justifiedGallery、jquery、valine、whatwg-fetch 等 # 处理 之前 fancybox 、 justifiedGallery 、 jquery 三个是由原 Shoka...
23k 21 分钟

# 前言 主要内容来源于官方 Cinemachine2.8 英文文档:https://docs.unity3d.com/Packages/com.unity.cinemachine@2.8/manual/CinemachineUsing.html 花了一个星期,学习之余,借助翻译软件一边看一边验证(顺便翻译,注:并不完全按照文档来的) # Virtual Camera # 基本情况 首先,场景中一般只有一个 Unity 相机(或者单独分离的 UI 相机),但可以有多个虚拟相机(不过一般只有一个活动) 虚拟相机应该算是 Cinemachine 中主要的一个组件,在某个虚拟相机处于活动状态时,...
16k 14 分钟

# 前言 部分来源于网络,并注明来源(已丢失除外),性能优化、批处理则主要整理自 Unity 官方文档 注 1:参考文档均在对应位置标注,文章末尾也贴了对应链接 注 2:对文章内容,后续可能会还会进行调整 # 硬件 # GPU 的渲染架构 # IMR(Immediate Mode Rendering,主要用于 PC 平台) 即渲染模式。每个像素渲染的时候直接访问 DRAM,并写入到 FrameBuffer 上。PC 平台的显卡都是 IMR 架构 # TBR(Tile-Based Rendering,基于 Tile 渲染,主要用于移动平台) 为了减少 GPU 访问 SystemMemory...
868 1 分钟

这几天看《算法之美》的时候,看到有一个问题是:如何设计一个数据结构,可以在 100M 内存的限制下快速在 1000 万 个数据中查找指定数据?(每个数据占 8B) 问题不重要,里面描述的时候,有一个说明是: 1000万 个数据正好 80M 左右 然后就在想,为什么是 80M?B 是 bit 还是 byte ?怎么一下子估算的? 一时没想明白 后来仔细想了下,这个估算起来,其实有比较简便的规则的 例如,正常的字节转换单位,按照『严格』转换方式如下: 单位...
5.6k 5 分钟

# 前言 这本书是紧接着《CLR VIR C#》 开始的,依然是回家的时候看,顺便在手机语雀上记笔记: 今天是 2023 年 5 月 1 日 也算是过了一遍了,这本书其实不是很厚 —— 至少跟 《CLR VIR C#》 相比就薄多了,也花了差不多一个月,主要是因为每周加两天班变成了常驻,另外还在追 DOTS1.0 的教程,导致时间上更短了。 这两天五一放假 (实际上前一天 28 号就提前请假了),然后回来从责任链模式继续看,认真专心点,还是挺快的。 本文总结的主要是部分重要的理论描述,—— 文字上的,毕竟是手机记录。很多重要概念的还是得结合代码。 #...
20k 18 分钟

# 前言 很久以前也有拿着 XLua C# 这边的源码看过,网上也找过资料... 就是搞不大清楚。 可惜没人提醒,后来才想明白,直接硬看 C# 这边的源码是不行的,想明白 C# 与 XLua 的交互原理,至少得先了解 C/C++ 与 Lua 的交互原理 —— 毕竟 C# 与 XLua 交互,依然是基于中间的 C API,了解了那边的概念,再看 C# 与 XLua 交互原理,才好理解。 # 基本介绍 Lua 虚拟机由 C/C++ 实现,因此它可以直接与宿主进行通信 C# 则可以依靠 C API 通过 P/Invoke 方式调用 Lua 虚拟机函数 即 C# 可以借助 C/C++ 来与 Lua...
4.6k 4 分钟

# 前言 最近做项目优化,在整理主界面的按钮问题的时候,用到了只读结构体,这个结构体会保存于一个列表中,并采用 in 对列表中的值进行引用传递。 然后突后面然想到,保存于列表中的值类型,真的能直接被引用吗? 毕竟 List 数据结构本身由于存在扩容问题,因此是不允许直接返回其中数据引用的。 那么我们就有理由怀疑:实际类型为 List 容器中,采用下标取出的对象作为引用传递时,它可能依然会在栈上新建一个临时变量,然后再将其作为引用传递过去。那么这里就还是存在一个额外拷贝开销了。 于是考虑了一下,并且也比较好奇,于是就想着用 ILSpy 进行反编译查看生成的 IL...
12k 11 分钟

# 前言 《CLR VIR C#》 这本书太厚,笔记也记得太多,因此还是分成两篇上传 这是第二篇,主要记录多线程相关章节笔记 # 第二十六章 线程基础 进程:进程是应用程序要使用的资源集合 每个进程都有一个虚拟地址空间,确保在一个进程中使用的代码和数据无法由另一个进程访问 以此确保应用程序实例的健壮性以及安全性 线程:对 CPU 进行虚拟化 每个进程都有自己专用线程 确保应用程序代码陷入死循环时仅 冻结 与代码关联的进程 Windows...
17k 16 分钟

# 前言 本来计划的是 3 月份就看完,结果 4 月 2 号了还剩两章,虽然这跟到后面看得更仔细有关,但是公司上个月突然要求加起班来也有关系,导致每周上班时间只有两天可以提前回家看书。 不过,在昨天 清明节 总算把这本书看完了! 看了下语雀的笔记创建记录: 已经记不起什么时候开始看的,笔记是 2 月 27...
6.1k 6 分钟

# 前言 在 《CLR vir C#》一书中,有说明 call 与 callvirt 的差别: call:可调用静态方法,实例方法和虚方法 调用实例方法和虚方法必须指定引用了对象的变量,该指令假定该变量不为 null callvirt:可调用实例方法和虚方法,不能调用静态方法(需要对变量做 null 检查,因此比 call 慢) 并且调用虚实例方法时,还需要检查发出调用对象的实际类型,然后以多态方式调用 同时,对于声明为 sealed 的类型,会有优化,采用 call 调用,例如:始终对结构体采用 call 调用。 这里我想进行各种调用测试,并从 IL 代码上确认下。 #...