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 代码上确认下。 #...
1.7k 2 分钟

# 原型 struct ssss{ int x, y;}struct aaaa{ int x, y; public aaaa(int a) { x = a; y = 100; }}struct bbbb{ int x, y; public bbbb(int a) { this = new bbbb(); y = 1; }}对应 IL 代码: # ssss 类 .class private sequential...
2.6k 2 分钟

# 前言 在上一篇 关于 AssetBundleManifest 使用 文章我就写了,我们项目最近搞 微信小游戏 版本 那么这个版本肯定是主要面向 国内 ,那么就可以考虑 ASTC 格式了,于是索性全部切为 ASTC ,安卓、IOS 统一 然后就发现,之前通过 TexturePacker 生成的 UI图集 ,基本上都是选择了 Force Squared(强制方形分辨率) 选项的 —— 应该是为了兼容 IOS 平台的 PVRTC 格式。 不过现在统一换成 ASTC 就没这样的必要了,免得浪费内存。 于是就想着批量处理一波 虽然其实很简单,不过还是记录一下,以后没准什么时候就又用到了。 #...
3k 3 分钟

# 前言 最近项目在做 微信小游戏 版本,因此所有的 AssetBundle 都得加上 AppendHashToAssetBundleName ,据说主要是用于解决缓存问题。 例如文档: 【重要】BuildAssetBundleOptions.AppendHashToAssetBundleName:bundle 带上 hash。在小游戏底层对 bundle 做缓存及缓存淘汰时,hash 是重要依据。 —— 这也导致了我们打包的一个问题,所有的 AssetBundle 打完之后,实际的名字都被改变了 (而且可以预期的是每次资源发生变化都会变): 如果依照正常的名字去...
21k 19 分钟

# 前言 匿名函数平时用得太常见了,平时都知道说用多了不好。 为什么不好?原因呢? 特别是涉及到造成 闭包 的匿名函数,其原理是什么?闭包 抓住 的的局部变量怎么处理的? 众所周知 匿名函数 其实是 C# 提供的一种 语法糖 ,最终还是会由编译器生成具体的函数。 不过之前一直没有深入去研究,这次带着这个疑问,我决定利用反编译的 IL 代码详细研究下,对比各种匿名函数写法,看看最后究竟生成了什么。 # 分类 C#...
9.1k 8 分钟

# 前言 这两天又研究了下协程,之前虽然用过,也稍微想过,但是并没有深入研究,这次就想把流程仔细走一遍。 # 原理 其实也是一个思维方式问题,协程的原理其实很简单:利用迭代器 # 迭代器 我们都知道,实现了 IEnumerable 接口、或者说拥有 IEnumerator GetEnumerator() 的类可以被 foreach 所迭代。 其重点就在于 IEnumerator 这个接口。 数组 、 List 、 字典 等数据结构,迭代时都是通过返回自己创建的一个实现了 IEnumerator 的 Warp 类进行。 为什么一个方法,标记返回 IEnumerator...
2.6k 2 分钟

# 前言 今年春节本来也没回家,就打算把总结写一下的。然后不知怎么拖延症又上来了,加上春节放假前几天不知怎么,嘴里也开了个口子,吃东西都疼,心情也难以好起来。 整个春节除了有两天时间出去买菜之外(另外春节蔬菜也涨价了,几乎比平时贵了几倍,白菜除外),基本上是一直待在成都屋里的。 早上起床坐一会,感觉就该吃午饭了 再睡一觉,又到了晚饭 ——...
11k 10 分钟

# 前言 想做这个的原因有两点: Unity 的各项压缩格式,除 RGB 不压缩及 ASTC,基本都只支持 POT 分辨率的图,但是美术给的图相当不合规范 最近在给自己博客换了主题,因为 Shoka 随机壁纸采用的新浪图床也不再提供服务,想着直接把随机图片托管到 GitPages 算了,GitPages 的速度大家都知道,这就涉及到一个尽量压缩少大小,以期减少加载时间的问题 之前直接在 Unity 里边写过一个小脚本,可以批量一键将图片『截取』为指定分辨率。 由于利用的是 Unity Texture2D 类,这个类提供的处理方式很简单粗暴:直接按像素设置。所以只能做到...