当前位置: 首页 > news >正文

lua 游戏架构 之 SceneLoad场景加载(一)

设计一个为`BaseSceneLoad` class,用于处理场景加载的相关操作 ,主要作用是提供了一个通用的场景加载框架,使得子类可以按照统一的接口进行场景加载操作。子类需要实现这些方法,以便在加载场景时能够正确地处理场景加载的各个阶段。

以下是对这些方法的解释:

1. `initialize()`:在加载场景之前进行初始化操作。
2. `startLoadingScene(curScene)`:开始加载场景。`curScene`是当前场景的引用,子类可以利用这个参数进行场景加载操作。
3. `disposeLoadingScene()`:在加载场景完成后进行清理操作。
4. `isLoadingSceneReady()`:判断场景加载是否完成。返回一个布尔值,表示场景是否已经加载完成。
5. `getLoadingSceneProgress()`:获取场景加载的进度。返回一个数字,表示场景加载的进度百分比。
6. `startPreLoadNewScene(curscene)`:开始预加载下一个场景。`curscene`是当前场景的引用,子类可以利用这个参数进行场景预加载操作。
7. `getScenePrefab()`:获取下一个场景的预设。
8. `isNewSceneLoadReady()`:判断新场景加载是否完成。返回一个布尔值,表示新场景是否已经加载完成。
9. `getNewSceneLoadProgress()`:获取新场景加载的进度。返回一个数字,表示新场景加载的进度百分比。
10. `onLoadingPanelOpen()`:加载面板打开时的回调函数。
11. `onSceneEnterForeground()`:场景进入前台的回调函数。
12. `dispose()`:释放资源。
13. `destoryPreDispose()`:在完全释放之前进行处理。
14. `destoryDispose()`:完全释放资源。

代码如下:

---@class BaseSceneLoad
local BaseSceneLoad = class("BaseSceneLoad")function BaseSceneLoad:initialize()
endfunction BaseSceneLoad:startLoadingScene(curScene)assert(false, "警告子类未实现")
endfunction BaseSceneLoad:disposeLoadingScene()assert(false, "警告子类未实现")
end
---@return boolean
function BaseSceneLoad:isLoadingSceneReady()assert(false, "警告子类未实现")
end
---@return number
function BaseSceneLoad:getLoadingSceneProgress()assert(false, "警告子类未实现")
endfunction BaseSceneLoad:startPreLoadNewScene(curscene)assert(false, "警告子类未实现")
endfunction BaseSceneLoad:getScenePrefab()assert(false, "警告子类未实现")
end
---@return boolean
function BaseSceneLoad:isNewSceneLoadReady()assert(false, "警告子类未实现")
end
---@return number
function BaseSceneLoad:getNewSceneLoadProgress()assert(false, "警告子类未实现")
endfunction BaseSceneLoad:onLoadingPanelOpen()assert(false, "警告子类未实现")
endfunction BaseSceneLoad:onSceneEnterForeground()assert(false, "之类未实现")
endfunction BaseSceneLoad:dispose()assert(false, "警告子类未实现")
end-- 完全释放前处理
function BaseSceneLoad:destoryPreDispose()assert(false, "警告子类未实现")
end-- 完全释放
function BaseSceneLoad:destoryDispose()assert(false, "警告子类未实现")
endreturn BaseSceneLoad

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Nacos】Nacos服务注册与发现 心跳检测机制源码解析
  • Unity UGUI 之EventSystem
  • PyTorch Autograd内部实现
  • RICHTEK立锜科技 WIFI 7电源参考设计
  • OCC 创建点线面体
  • js 只读对象
  • CSRF+XSS组合攻击实战
  • MySQL1.试建产品库
  • 网友提问:display:flex和display:box有什么区别?
  • k8s核心操作_存储抽象_K8S中使用Secret功能来存储密码_使用免密拉取镜像_k8s核心实战总结---分布式云原生部署架构搭建033
  • Android 记录锁屏的上层相关源码以及debug WindowManager
  • 大数据环境下的房地产数据分析与预测研究的设计与实现
  • 5 webSocket
  • 1个Xpath定位可以在Web页面查找到多个元素Selenium
  • Nginx部署前端项目尝试 - windows版
  • Computed property XXX was assigned to but it has no setter
  • ECS应用管理最佳实践
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • REST架构的思考
  • scala基础语法(二)
  • WebSocket使用
  • 半理解系列--Promise的进化史
  • 动态魔术使用DBMS_SQL
  • 读懂package.json -- 依赖管理
  • 记一次用 NodeJs 实现模拟登录的思路
  • 力扣(LeetCode)21
  • 深度学习在携程攻略社区的应用
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • ionic异常记录
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ###C语言程序设计-----C语言学习(6)#
  • #AngularJS#$sce.trustAsResourceUrl
  • (1)Jupyter Notebook 下载及安装
  • (1)无线电失控保护(二)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (二)换源+apt-get基础配置+搜狗拼音
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)Dubbo快速入门、介绍、使用
  • (转)Linq学习笔记
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .Net插件开发开源框架
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET是什么
  • .NET中统一的存储过程调用方法(收藏)
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [100天算法】-x 的平方根(day 61)
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [ACM] hdu 1201 18岁生日
  • [acm算法学习] 后缀数组SA
  • [Android View] 可绘制形状 (Shape Xml)
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [C/C++] -- 二叉树
  • [C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品