示例集 HYCSimple
框架自带的最小可用示例:7 个模块各一份可运行代码,覆盖属性、配置、行为树、本地化、场景引导、输入组件化、Cinemachine 双屏相机。
每个子系统目录都有一份 AI-NOTES.md,讲清「怎么接入、菜单路径、雷区」——这是框架对外教学的事实入口。
两种引入方式(二选一)
| 方式 | 做法 | 落到哪 |
|---|---|---|
| 官方 | Package Manager → Samples → HYCSimple → Import | Assets/Samples/com.hyc.framework/<版本>/HYCSimple/ |
| 菜单快捷 | HYC Framework/Samples/Import HYCSimple(全量重拷) | Assets/HYCSimple/ |
⚠
两路别同时用,否则同一批类型编译两次 → CS0101。另外不要把示例拷进
Assets/Samples/<包名>/:那是 Package Manager 保留区,包未解析时 Unity 扫到就停,Project 窗口展开为空且不报错。示例默认「不自动运行」
✕
所有
真实事故一次:宿主已在
*DemoSystem 都标了 [DisableAutoCreation],Unity 不会自动把它们拉进 World。原因:框架的 Manager(Localization / Config / BT)是进程级静态单例,示例 System 一旦偷偷自启,就会在宿主工程毫无察觉的情况下改写它们。真实事故一次:宿主已在
[RuntimeInitializeOnLoadMethod] 阶段加载了自己的 18 条本地化 key,示例却在第一次 OnUpdate 里执行 LocalizationManager.Reload(示例目录) —— 宿主张表当场蒸发,主菜单全线 未找到Key : xxx,且因为示例每帧兜底,宿主怎么重导都会被下一帧洗掉,极难定位。由此定下三条硬规矩:
- 示例 System 一律
[DisableAutoCreation],由HYCSimpleSceneBootstrap(MonoBehaviour)显式手动 Update。 - 示例不得抢占宿主已加载的全局单例:
CanTakeOver()会在「全局表已有非示例数据」时跳过Reload并打印醒目警告。 - 想跑示例就新建一个空场景,把
HYCSimpleSceneBootstrap挂到任一 GameObject 上再 Play;宿主工程什么都不挂就零副作用。
一键生成真实资产
进 Unity 后先跑 HYC Framework/Samples/创建全部示例资产,会生成:
Assets/HYCSampleTrees/HYCSimpleDemoTree.asset(BT 树)+ 导出StreamingAssets/BTBlob/*.blobAssets/HYCSampleSampleAssets/GameAttrCatalog.asset(属性目录)+GameHeroSet.asset(属性预设)
之后进 Play,BT / Attr 示例系统就会读取这些资产跑真实链路。
编译 / Assembly 说明
示例自带两个 asmdef,导入后编译成独立程序集(不污染你的 Assembly-CSharp):
HYCSimple.asmdef(根,运行时,含 Attr/Config/BT/Loc/Scene):allowUnsafeCode: false。Loc 示例已改用 Unity 内置BlobBuilder.AllocateString(2022.3 / Entities 1.0 已按 UTF-8 真实字节数分配,中文不再截断,且是安全 API),因此不需要在 Player Settings 里开「Allow unsafe code」,也不会出现 CS0227。BT/Editor/HYCSimple.Editor.asmdef(仅编辑器):放建树 / 建资产 / 数据创建脚本,引用HYC.Framework.Editor+HYC.Framework.Runtime。
⚠
不要删除这两个 asmdef:删了示例就会退回
Assembly-CSharp,与旧 PM 副本同批类型重复 → CS0101。七个示例分别讲什么
数据
Config 配置 →
从 items.csv 读真实数据 → Build → Register → 查表,证明配置不在代码里写死。
Attr 属性 →
加载真实 .asset → InitFromSet 灌袋 → 类型安全 AttrBag 读写。
BT 行为树 →
一棵有真实语义的敌人 AI 树 + GameCustom 自定义节点,进 Play 真的逐帧执行。
数据Loc 多语言 →
运行时自造数据写盘 → Reload → GetText / SetLanguage / HasKey。
串联Scene 场景引导 →
把 Attr/Config/BT/Loc 串成一条链,演示引导顺序与跨端契约。
输入Input 输入组件化 →
代码构造 InputActionAsset → 生成 ECS 组件 → A0 写入 → B9 读取。
相机Cinemachine 双屏 →
两个可运行场景:同一地图双人分屏 + 同场景视觉分叉,接缝可在 Game 视图拖。
◈
全部示例尚未在 Unity 编译验证(框架侧 C# 也在等 Unity 编译)。导入后请按各
AI-NOTES.md 的验证清单跑一遍。