CORE ONLY → BOOTSTRAP LITE

Sakura Framework 15 分钟快速开始

从安装到第一次事件和对象复用,用可观察结果确认最小稳定组合真正可用。

BEFORE YOU START

准备与完成标准

  • 准备一个可正常编译的 Unity 项目,并在修改依赖前保留版本控制快照。
  • 确认能够打开 Package Manager;本教程不要求先安装 Preview 或 Experimental 包。
  • 把完成标准设为编译、事件往返和对象池计数通过,而不是只看到包出现在列表里。

REVIEWED ROUTES

包名来自已复核的稳定路线

这里不维护第二份包清单:路线 ID 解析到 Framework adoption 注册表,事实漂移时构建会失败。

01

core-only

Core Only

先验证 UPM 解析、基础契约和脚本编译。

com.unitygame.framework.core
02

bootstrap-lite

Bootstrap Lite

在 Core 上增加事件、对象池与游戏运行辅助,形成最小稳定组合。

com.unitygame.framework.corecom.unitygame.framework.eventcom.unitygame.framework.gamehelpercom.unitygame.framework.pooling

正式项目的版本边界

  • 页面中的 #main 仅用于打开 Developer Console 和评估安装流程,不代表 Stable 发布通道。
  • 正式项目应回到 Framework 仓库的 Supported Profiles 与 stable manifest snippet,锁定经过审阅的 tag 或 commit。
  • 教程不复制版本号;路线中的包名从本站已人工复核的 adoption 注册表实时派生。

FOLLOW IN ORDER

六步完成第一次可验证运行

15分钟

  1. 0–2 MIN

    安装 Developer Console

    先取得可预览、可确认、失败关闭的图形化入口,不直接手改整份 manifest。

    1. 在 Package Manager 中选择 Add package from git URL。
    2. 粘贴页面提供的 Editor Tools 开发 / 评估 URL,等待 Unity 完成解析与编译。
    3. 打开 IrisSakura / Sakura Framework / Developer Console。

    完成标准Developer Console 能打开,Console 中没有由包解析产生的新编译错误。

  2. 2–4 MIN

    先验证 Core Only

    用最小闭包确认 UPM 解析、基础契约和脚本编译,再继续增加运行时服务。

    Core Only
    com.unitygame.framework.core
    1. 在 Newcomer Guided Entry 中选择 Simple 2D Quickstart。
    2. 预览 Core Only 路线和将要写入的依赖,不在未确认时应用修改。
    3. 显式确认后等待 Unity 完成导入与编译。

    完成标准Core Only 路线中的包均已解析,项目仍能无新增错误地完成脚本编译。

  3. 4–7 MIN

    扩展到 Bootstrap Lite

    一次性安装已复核的最小稳定组合,避免手工猜测 Event 的内部依赖。

    Bootstrap Lite
    com.unitygame.framework.corecom.unitygame.framework.eventcom.unitygame.framework.gamehelpercom.unitygame.framework.pooling
    1. 在同一向导中预览 Bootstrap Lite 的完整包闭包。
    2. 确认清单只包含下方从 adoption 注册表派生的 Supported 包。
    3. 显式确认安装并再次等待脚本编译结束。

    完成标准Bootstrap Lite 的四包闭包全部可解析,且没有引入 Preview 或 Experimental 包。

  4. 7–10 MIN

    完成第一次事件往返

    使用引擎无关 Event Core 做一次订阅、同步派发、退订与清理。

    1. 把示例放入项目脚本,并从自己的启动或测试入口调用 QuickstartEventProbe.Run。
    2. 确认返回值为 true;监听器必须同步消费事件,不能保留已被派发流程回收的事件引用。
    3. 保留 RemoveListener 与 Clear,避免把教程探针变成长期订阅。

    可复制的最小探针

    using System;
    using Framework.Event;
    
    public static class QuickstartEventProbe
    {
        public static bool Run()
        {
            var events = new EventService();
            var received = 0;
            Action<PingEvent> listener = _ => received++;
    
            events.AddListener(listener);
            events.TriggerEvent(new PingEvent());
            events.RemoveListener(listener);
            events.Clear();
            return received == 1;
        }
    
        private sealed class PingEvent : IEvent
        {
            public string EventName => nameof(PingEvent);
            public DateTime TriggerTime { get; set; }
        }
    }

    完成标准事件只被接收一次,监听器已移除,EventService 已清理。

  5. 10–12 MIN

    获取并归还第一个对象

    使用 Pooling Core 验证一次 Get、Release、活动计数归零与 Clear。

    1. 把示例放入项目脚本,并从自己的启动或测试入口调用 QuickstartPoolProbe.Run。
    2. 确认对象被使用一次,Release 后 CountActive 为零。
    3. 探针结束时调用 Clear,不把临时对象留给后续场景。

    可复制的最小探针

    using Framework.GameHelper;
    
    public static class QuickstartPoolProbe
    {
        public static bool Run()
        {
            var pool = new ObjectPool<Token>(() => new Token(), defaultCapacity: 1, maxSize: 4);
            var token = pool.Get();
            token.UseCount++;
            pool.Release(token);
    
            var passed = token.UseCount == 1 && pool.CountActive == 0;
            pool.Clear();
            return passed;
        }
    
        private sealed class Token
        {
            public int UseCount { get; set; }
        }
    }

    完成标准探针返回 true,对象已归还且活动对象计数为零。

  6. 12–15 MIN

    验证结果并清理探针

    以可观察结果收尾;需要更完整的 Preview 诊断时,再导入 Runtime Starter。

    1. 重新触发脚本编译,确认 Event 与 Pooling 探针都返回 true。
    2. 如需继续评估,在 Developer Console 中导入 Runtime Starter Sample,先运行 Doctor 再打开 Sample Scene。
    3. 确认 Event、Pooling、Save 必须通过;Config / Audio 仅在项目资源缺失时允许结构化 Skipped。
    4. 完成后删除教程探针;Runtime Starter 只按 owner token 清理自己的临时数据。

    完成标准编译通过、事件往返为一次、对象池活动计数为零,所有临时订阅和探针资源均已清理。

DONE MEANS VERIFIED

不要停在“包已出现”

  • UPM 解析完成,脚本编译没有新增错误。
  • Event 探针返回 true,并完成退订与 Clear。
  • Pooling 探针返回 true,Release 后 CountActive 为零并完成 Clear。
  • 没有为了跑通教程而安装任何未声明的 Preview 或 Experimental 包。

FAIL CLOSED

故障诊断

错误必须能够解释和回退;不要把缺失依赖或未执行步骤包装成成功。

Package Manager 无法解析依赖

先回到 Core Only,检查网络、Git 可用性与 manifest 差异;不要通过补装未知 Preview 包绕过错误。

Runtime Starter 显示 dependency-missing

把它视为缺少对应适配器的明确诊断,回到 Developer Console 检查 Sample 与依赖是否完整,不要把缺项记成成功。

事件收到多次或离开场景后仍触发

核对 AddListener 与 RemoveListener 是否成对,并在探针或 owner 生命周期结束时调用 Clear。

对象池活动计数不为零

确保每次 Get 都有对应 Release;测试结束后调用 Clear,并检查对象是否被其他系统继续持有。

LEAVE NO PROBE BEHIND

清理与卸载边界

  1. 删除 QuickstartEventProbe 与 QuickstartPoolProbe,或把验证迁移为项目自己的测试。
  2. 移除仅用于评估的 Runtime Starter Sample;不要删除项目自己创建的 Save 或配置数据。
  3. 如果不继续使用 Framework,先用版本控制检查 manifest 和 lock 文件差异,再按 Package Manager 依赖顺序卸载。
返回 Framework 成熟度页