09. 保存地图场景
1.02. 创建房间的 Prefab2.03. 设计地图配置表3.04. 生成地图上的房间4.07. 泛型事件框架5.08. 场景加载
6.09. 保存地图场景
7.10. 房间进出逻辑8.11. 制作卡牌 Prefab9.12. 创建卡牌数据类10.13. 对象池11.14. 制作卡牌库实现抽卡12.15. 创建卡牌布局13.16. 抽卡动画14.17. 实现卡牌扇形布局15.18. 实现鼠标事件16.19. 卡牌拖拽17.20. 攻击牌的拖拽指针18.21. 实现洗牌逻辑19.22. 导入Spine人物素材20.23. 人物基类代码21.24. 执行卡牌效果22.25. 制作血条的 UI Document23.26. 绑定血条数据24.27. 创建USS血条样式25.28. 制作 Gameplay Panel26.29. 绑定 Gameplay Panel 数据27.30. 回合转换28.31. 出牌能量判断29.32. 防御牌及 UI30.33. 回血的苹果牌及特效31.34. 增加力量牌及 UI32.35. 更多卡牌33.36. 人物动画34.37. 敌人意图 AI 逻辑35.38. 敌人的动画执行逻辑36.39. 对战胜负逻辑37.40. 制作胜利和抽卡面板38.41. 抽卡面板的实际逻辑39.42. GameOver 及 Menu 面板40.43. 实现休息房间的逻辑41.44. Boss 制作和整体流程42.45. 淡入淡出及打包游戏本节目的
将 Map 上的房间和连线都保存下来,以便从战斗场景回来的时候能够恢复这些数据
实现方法
定义存储结构
定义一个名叫MapLayoutSO
的 ScriptableObject,它里面记录了所有的房间和连线信息,如下图所示
房间的信息中不单单有房间的图标、房间的类型、引用的场景,还有房间的状态、房间的坐标(posX, posY),房间的列号、行号
线条的信息中有起点和终点的坐标,因为 Vector3 不能进行序列化,所以需要使用 SerializeVector3 包装一下
实例化存储体
在 Game Data / Settings 下面创建出 MapLayoutSO
修改 Map Generator
在 Map Generator 中添加MapLayoutSO
,并通过拖拽的方式进行赋值
然后为它编写SaveMap
和LoadMap
两个方法
SaveMap
的时候,需要遍历所有的房间和线段,然后将它们保存到MapLayoutSO
中
LoadMap
的时候,需要从MapLayoutSO
中读取所有的房间和线段信息,并反向更新上去
在CreateMap
的最后,调用SaveMap
保存数据
在OnEnable
的时候,如果当前MapLayoutSO
存储的房间数大于0,那么就从MapLayoutSO
中读取数据,否则就重新创建一个
Start
里面不再调用CreateMap
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?