案例研究 / 03
Old Town Hotel
Unity 6 / C# / 137 EditMode Tests
Old Town Hotel / 系统设计Unity 6 / C#
房间生命周期每个房间,
一个明确的状态。
一个明确的状态。
脏房→清洁中→查房→可入住→已入住
带守卫的状态迁移 · 数据驱动的数值平衡 · 137 个 EditMode 测试
角色独立游戏开发者与系统设计师
背景独立的公开作品集项目
状态开发中 / 公开仓库
挑战
把相互依赖的酒店运营,变成既可读、又可配置、可测试的游戏系统。
我的贡献
独立设计并实现整个项目:客人队列、房间匹配、房间状态机、查房、酒廊库存、成就与日终结算。
交付过程
这项工作
是如何成形的。
从对问题的第一个模型,到检验系统的实际行为。
为一天建模
把到店、分房、客房清洁、酒廊服务与日终结算,转化为可玩的循环。
拆开各个系统
让客人、房间、库存与 UI 各司其职,规则演进时无需重写整个项目。
让内容可配置
用 ScriptableObject 与数据驱动的配置,把数值调整放在核心逻辑之外。
验证规则
围绕状态迁移与边界情况搭建 EditMode 测试套件,达到 137 个测试。
工程证据
那些
真正重要的细节。
- 137 个 Unity EditMode 测试
- 由 ScriptableObject 驱动的配置
- 模块化 UI 与多场景架构
- GDD 与架构决策记录(ADR)
- 客人偏好与房间匹配逻辑
- 房间生命周期、查房与返工闭环
决策细节 / 展开阅读
01把房间建模为生命周期
脏房、清洁中、查房、可入住、已入住是彼此不同的阶段。带守卫的状态迁移更容易阻止非法组合,也给测试划出了清晰的边界。
02让客人偏好影响决策
当客人的需求与可用房间产生竞争时,分房就成了游戏。适配规则让前台工作变成有意义的选择,并把这个选择与表现层分开。
03把数值与实现分开
ScriptableObject 配置保存平衡数值与内容,模拟可以持续演进,而不必把数值改动散落在玩法代码中。
04在场景之下测试规则
经济模型是纯 C#,藏在面向 Unity 的组件之后。EditMode 测试可以验证财务与状态行为,而不必让每条规则都依赖手动跑一遍场景。
结果
一个完整的纵向切片,展示了 C# 系统开发、测试纪律、游戏设计推理,以及把领域知识转化为交互规则的能力。
独立开发中的项目,采用 AI 辅助的工作流。游戏设计、架构决策、集成与验证由我负责;公开仓库包含代码、测试与开发历史。
- Unity 6
- C#
- EditMode Tests
- ScriptableObject
- Git
下一个案例
04Retro Quest→