Project reference
HappyMahjong Project Map
把通用 Unity 课落到你们真实项目:路径、启动场景、StrangeIoC、UI 系统和第一条可追踪链路。
项目事实
| 问题 | 答案 | 证据 |
|---|---|---|
| 项目路径 | /Users/lionqu/Github/NewHappyMahjongClient/HappyMahjongClient | 用户提供,已扫描确认。 |
| Unity 版本 | 2021.3.15f1 | ProjectSettings/ProjectVersion.txt |
| 启动场景 | Assets/Scenes/AppMainScene.unity | ProjectSettings/EditorBuildSettings.asset 第一项。 |
| 启动脚本 | Assets/Scripts/Boot/LoadDll.cs | AppMainScene.unity 中 LoadDll GameObject 引用该脚本。 |
| IoC 框架 | StrangeIoC / MVCS | AppContext、LoginContext、GameContext 继承 MVCSContext。 |
| UI 现实 | 当前新功能不按 NGUI 开发;UIEventListener / Empty Click 保留用于点击绑定和兼容 | 用户纠偏 + 代码中大量 UIEventListener.Get(...).onClick 与 EmptyClick 对象 |
启动链路:课堂只讲这条
最小地图:只定位,不深入
AppMainSceneBuild Settings 第一项
LoadDll启动 / 热更
UIRootUI 根
AppMainRoot业务根
AppRootContextView
AppContext大厅容器
普通 UI 小任务如果走到蓝色或黄色节点要谨慎:多数情况下它们只是只读地图。
- Unity 打开
Assets/Scenes/AppMainScene.unity。 - Scene 中的 LoadDll 对象 执行
LoadDll.Awake()/Start()。 - LoadDll 完成 TSDK、ConfigSDK、Bootstrap、HybridCLR / 热更 DLL 加载。
- LoadDll.LoadScenePrefab() 实例化
JavaCallbackObject、UIRoot、AppMainRoot。 - AppMainRoot 挂
AppRoot : ContextView。 - AppRoot.Start() 创建
context = new AppContext(this)。 - AppContext 绑定大厅主容器:Model、Service、Command、View/Mediator、CrossContext 事件。
讲课注意: 不要把
AppMainScene 讲成普通登录页面。它是启动壳;真正业务 UI 通过资源和 Context 加载出来。第一条真实功能链:登录
登录链路图
LoginView用户点击
LoginMediatordispatch
LoginCommand平台 / TSDK
LoginManager票据 / SDK
TSDKEventListener回调
LoginController数据拉取 / 进大厅
LoginView
→ LoginMediator
→ LoginPlatformCommand / LoginTSDKCommand
→ LoginManager / TSDKService
→ TSDKEventListener
→ LoginController
→ NewSceneManager / MainScene
课堂可让 agent 只分析这条链,不修改代码。关键路径:
Assets/Scripts/InGameScripts/InGameScripts/Hall/Login/View/LoginView.csAssets/Scripts/InGameScripts/InGameScripts/Hall/Login/View/LoginMediator.csAssets/Scripts/InGameScripts/InGameScripts/Hall/Login/Controller/LoginPlatformCommand.csAssets/Scripts/InGameScripts/InGameScripts/Hall/Login/Controller/LoginTSDKCommand.csAssets/Scripts/InGameScripts/InGameScripts/Hall/Login/LoginManager.csAssets/Scripts/InGameScripts/InGameScripts/Hall/Login/LoginController.csAssets/Scripts/InGameScripts/InGameScripts/Hall/Login/LoginContext.csDocs/01-flows/login-flow.md
HappyMahjong UI 规则
- 当前新功能不按 NGUI 范式开发;NGUI 相关类/目录主要是历史兼容残留。
UIEventListener仍常用来绑定点击;看到它不代表要写 NGUI。EmptyClick/emptyClick/CloseEmptyClick常用于空白区域、遮罩、关闭、阻断点击穿透。- 加载 UI Prefab 优先走
UIUtil,不要直接Resources.Load。 - 实例化 UI 优先走
UIUtil.Instantiate,不要直接Object.Instantiate,否则可能绕过资源引用计数。 - 弹窗必须通过
PopUpManager管理层级,不要直接SetActive(true)当作弹窗显示。 - 修改
GameUIView.cs前必须先定位 region;这是超大高风险文件。
架构排查 prompt:只有卡住时才用
项目路径:/Users/lionqu/Github/NewHappyMahjongClient/HappyMahjongClient
Unity 版本:2021.3.15f1
启动场景:Assets/Scenes/AppMainScene.unity
框架:StrangeIoC / MVCS;UI 新功能不按 NGUI 开发,UIEventListener 与 Empty Click 保留用于兼容和点击绑定。
先不要修改代码。我需要判断这个问题是否涉及启动链路或跨 Context。
请分析:
1. 是否需要理解 AppMainScene → LoadDll → AppMainRoot → AppContext。
2. 是否跨 AppContext / LoginContext / SelectionContext / GameContext。
3. 是否使用 CrossContextBridge 或 ModuleRegistry。
4. 哪些文件只是只读地图,哪些文件可能需要修改。
5. 如果只是普通 UI 小任务,请明确说“不需要架构级分析”,并退回 View → Mediator → Command → Service 链路。
所有结论必须附文件路径;不确定处标注“推测”。
项目文档入口
Docs/00-overview/project-overview.mdDocs/00-overview/architecture-map.mdDocs/01-flows/startup-flow.mdDocs/01-flows/login-flow.mdDocs/02-systems/ui-system.mdDocs/02-systems/network-system.mdDocs/04-ai-index/code-map.mdDocs/04-ai-index/risky-files.md