在 .Net 中关于 Dictionary (哈希表) 的一些细节

程序 

本文详细解析了C#中`Dictionary`类的内部设计与实现原理。其底层采用“数组+链表”结构存储键值对,通过哈希值与容量取余确定索引,桶数组处理哈希冲突,理想情况下操作时间复杂度为O(1)。若哈希函数不合理导致所有冲突集中于同一桶,则退化为链表(O(n)),部分语言使用红黑树优化至O(log n)。 此外,文章探讨了`Dictionary`的扩容机制,由于涉及重新哈希与桶重建,建议预设初始容量以减少扩容开销。对于遍历性能,通过源码分析与基准测试对比直接遍历键值对与遍历值集合两种方式,结果显示两者在时间和内存分配上无明显差异,均通过迭代器直接访问内部数组实现,避免了额外内存分配。

[问题记录] 在 Unity 中使用 Animancer + Animation Rigging 出现权重随机重置的问题


本文解释了在Unity中使用Animancer插件结合Animation Rigging进行IK瞄准动画时,切换动画状态会导致Rigging参数重置为场景默认值的“鬼畜”问题。其根本原因是Animancer底层使用Playable API,在运行时切换状态或动态添加动画片段时会修改Playable Graph,进而触发Animator.Rebind(),强制重置相关参数。解决方案核心是防止Playable Graph被修改:一是设置`Animancer.Playable.KeepChildrenConnected = true`,避免状态切换时断开Playable连接;二是提前通过`Animancer.Play(ITransition)`初始化所有动画状态,防止进入新状态时修改Graph。目前尚无其他方法能在修改Playable Graph的同时避免触发Rebind。
Yarn 脚本语法指南 (编写中)

Yarn 脚本语法指南 (编写中)

程序 

本文介绍Yarn脚本语言的基本语法和使用,聚焦于程序向视角。Yarn是专为Yarn Spinner设计的脚本语言,用于编写游戏对话,支持分支、函数和命令等功能。 Yarn脚本以`.yarn`为后缀,由节点(Node)组成。每个节点包括节点头(含标题等元数据)和节点体,两者用`---`分隔,节点间用`===`分隔。节点体中可包含文本行、选项和命令:文本行可直接书写对话,可用冒号指定角色;选项以`->`起始,允许玩家选择并定义后续内容;注释以`///`标记。建议使用Visual Studio Code配合Yarn Spinner插件进行编辑,以获得语法高亮和补全等支持。文章内容参考官方文档,并补充了测试结果。
在 Unity 中安装和使用 Yarn Spinner

在 Unity 中安装和使用 Yarn Spinner


本文介绍了Yarn Spinner在Unity中的安装与使用方法。插件支持付费(Itch.io或Unity Asset Store)与免费(GitHub或通过OpenUPM注册表安装)两种方式,后者更灵活但需注意版本兼容性。核心部分解释了Yarn脚本(.yarn文件)、Yarn工程(用于管理脚本与本地化)及关键组件:Dialogue Runner(对话运行器)、Variable Storage(变量存储)和Line Provider(本地化文本提供者)。文章通过快速入门演示了创建脚本与工程、配置Dialogue Runner并运行对话的基本流程,并详细指导了如何定制对话UI,包括创建自定义Line View实现文本输出、通过按键/鼠标/按钮控制对话前进,以及使用Option List View和Option View构建选项系统,最终实现一个可完全自定义的对话界面。
开始使用 Yarn Spinner - 可能是目前最好的开源文本对话系统解决方案

开始使用 Yarn Spinner - 可能是目前最好的开源文本对话系统解决方案

解析Obj模型文件格式

解析Obj模型文件格式

模型 

本文以 Blender 导出的立方体模型为例,系统解析了 OBJ 三维模型文件格式的结构与数据构成。文章首先指出 OBJ 是一种开源的纯文本模型规范,并通过立方体文件展示了其包含的顶点、法向、纹理坐标与面的定义方式。具体介绍了模型中的各类标记:注释(“#”)、材质库链接(“mtllib”)、网格对象(“o”)、顶点坐标(“v”)、法向量(“vn”)、纹理坐标(“vt”)、平滑组(“s”)及面的索引组织(“f”)。文中还提及了关联的 MTL 材质文件,简要说明了材质参数(如环境光、漫反射、镜面反射等)对模型渲染效果的影响。整体上,文章以实例结合图示,清晰说明了 OBJ 格式如何通过文本数据描述三维模型的几何与外观信息。

Lua 基础语法速记

程序 

本文介绍了LuatOS中Lua脚本语言的基础语法。主要内容包括:一、在线虚拟机环境的使用;二、变量的声明(全局与局部)、数据类型(数字、字符串、布尔、表)及其操作,如字符串连接、类型转换和表的基本函数;三、运算符,如乘幂、左移右移;四、函数的定义、参数与返回值;五、分支判断语句(if-elseif-else);六、循环语句(for、while),包括循环控制和break使用。文章通过代码示例详细说明了各语法要点,适合初学者快速掌握Lua编程基础。