Welcome to HanWen's Blog!

The language switcher is available in the top navigation

最近整理了一次角色动画模块。原先本地玩家、网络同步玩家和 AI 共用一个动画组件,随着手持物、送礼等行为接入,业务层开始出现越来越多“如果是其他玩家,就额外处理一下”的代码。

这次调整主要做了两件事:根据 Animator 的实际驱动方式拆分实现;让角色实体以普通 C# 对象的方式持有动画驱动器,负责它的创建与释放。下面保留这次重构时的思路,说明原先哪里不方便,以及新结构怎样消除这些特殊处理。

阅读全文 »

排查一个线上问题时,日志本应提供线索,但大量高频输出也会让问题更难看清。后来我专门做了一次统计:从进入游戏开始,采样到帧率稳定后的五秒,查看每条日志分别打印了多少次。

结果排在第一的一条输出出现了 947 次,后面的几条则是几十次。删掉这条重复日志后,当时的主观流畅度已有明显改善。这让我开始系统整理日志频率、用途和开关。

阅读全文 »

在 Unity 的 Lua 业务中调用 C#,经常会遇到一种割裂感:代码运行没有问题,编辑器却不知道对象是什么类型,也无法继续补全后面的字段。尤其经过单例、委托和 CS 表之后,一条本来有完整类型信息的调用链,很容易变成一串未知字段。

我在开源生成器上做了些修改,把这些类型提示补齐。

Lua 类型注解生成器的项目介绍与 Unity 类型补全效果拼图

阅读全文 »

随着玩法增加,项目的 GM 面板里积累了越来越多按钮。最早把命令放在同一页还算方便,后来查一个不常用的操作要翻很久,添加命令也常常需要修改面板本身。

我在 2024 年 8 月做了带分类的新版本,允许业务在运行时注册命令;到 2025 年 3 月,又增加了本地收藏。改动不复杂,但它解决的是开发和测试每天都会遇到的问题。

阅读全文 »

想象一座带有桥洞的小桥. 玩家先从左侧上桥, 再从右侧下桥, 最后从中间的桥洞走过去.

这是一个很简单, 很常见的场景. 然而, 要在2D top-down视角的游戏中实现它却比想象中更复杂 –在桥上阻挡玩家跳下去的碰撞盒, 要如何才不会阻挡要穿过桥洞的玩家?

好吧这两个数字可能被压的太扁了

阅读全文 »

欢迎!

这是我在Blog的第一篇文章. 这里将会分享SHW的心得, 新学到的技术, 以及诸多奇思妙想; )

谢谢你的关注 ! 期待与你再会.

view1

0%