lua 游戏架构 之 SceneLoad场景加载(二)
创始人
2024-12-25 21:40:00
0

设计上 定义 `NormalSceneLoad`的类,该类继承自`BaseSceneLoad`。

lua 游戏架构 之 SceneLoad场景加载(一)-CSDN博客文章浏览阅读48次。设计一个为`BaseSceneLoad` class,用于处理场景加载的相关操作 ,主要作用是提供了一个通用的场景加载框架https://blog.csdn.net/heyuchang666/article/details/140560014?spm=1001.2014.3001.5501

`NormalSceneLoad`类主要用于处理普通场景的加载和释放。

1. 定义类:`NormalSceneLoad = class("NormalSceneLoad", BaseSceneLoad)`

2. 初始化函数:`function NormalSceneLoad:initialize()`

   这个函数用于初始化`NormalSceneLoad`类的实例。它调用了基类的`initialize`函数,并设置了一个标志位`self._isDispose`为`false`。

3. 获取加载器类型:`function NormalSceneLoad:getLoaderType()`

   这个函数返回`SceneEnum.sceneType.unity`,表示该类加载器加载的类型为Unity场景。

4. 开始加载场景:`function NormalSceneLoad:startLoadingScene(curScene)`

   这个函数用于开始加载场景。它首先调用基类的`startLoadingScene`函数,然后创建一个异步加载场景的实例`self._loadingScene`。

5. 释放加载场景:`function NormalSceneLoad:disposeLoadingScene()`

   这个函数用于释放加载的场景。它首先检查`self._loadingScene`是否为`nil`,如果不是,则调用`release`或`sceneReleaseBase`函数释放场景。

6. 检查加载场景是否准备就绪:`---@return boolean`

   这个函数用于检查加载的场景是否已经准备就绪。它返回`self._loadingScene.isComplete`,即异步加载场景的完成状态。

7. 获取加载场景的进度:`---@return number`

   这个函数用于获取加载的场景的进度。它返回`self._loadingScene:getProgress()`,即异步加载场景的进度值。

8. 开始预加载新场景:`function NormalSceneLoad:startPreLoadNewScene(curScene)`

   这个函数用于开始预加载新场景。它首先调用`curScene:loadUnitySceneAsync()`函数,创建一个异步加载新场景的实例`self._sceneAsync`。

9. 获取新场景的预加载进度:`return number`

   这个函数用于获取新场景的预加载进度。它返回`self._sceneAsync:getProgress()`,即异步加载新场景的进度值。

10. 打开加载面板:`function NormalSceneLoad:onLoadingPanelOpen()`

    这个函数用于在加载场景时打开加载面板。

11. 场景进入前台:`function NormalSceneLoad:onSceneEnterForeground()`

    这个函数用于在场景进入前台时执行。

12. 释放:`function NormalSceneLoad:dispose()`

    这个函数用于释放`NormalSceneLoad`类的实例。它首先检查`self._isDispose`是否为`true`,如果是,则直接返回。否则,调用`disposeLoadingScene`和`destoryPreDispose`函数释放场景和处理前释放。

13. 销毁前释放:`function NormalSceneLoad:destoryPreDispose()`

    这个函数用于在销毁前释放`NormalSceneLoad`类的实例。它首先检查`self._isDispose`是否为`true`,如果是,则直接返回。否则,调用`dispose`函数释放场景和处理前释放。

14. 销毁释放:`function NormalSceneLoad:destoryDispose()`

    这个函数用于在销毁时释放`NormalSceneLoad`类的实例。它首先检查`self._isDispose`是否为`true`,如果是,则直接返回。否则,调用`dispose`函数释放场景和处理前释放。

---@class NormalSceneLoad:BaseSceneLoad ---@field _sceneAsync SceneLoader ---@field _loadingScene SceneLoader local NormalSceneLoad = class("NormalSceneLoad", BaseSceneLoad)  function NormalSceneLoad:initialize()     BaseSceneLoad.initialize(self)     self._isDispose = false end  function NormalSceneLoad:getLoaderType()     return SceneEnum.sceneType.unity end  function NormalSceneLoad:startLoadingScene(curScene)     self._loadingScene = g.loaderManager:loadSceneAsync("Scenes/LoadingScene.unity") end  function NormalSceneLoad:disposeLoadingScene()     if self._loadingScene then         if g.isDestroyed then             self._loadingScene:sceneReleaseBase()         else             self._loadingScene:release()         end         self._loadingScene = nil     end end ---@return boolean function NormalSceneLoad:isLoadingSceneReady()     return self._loadingScene.isComplete end ---@return number function NormalSceneLoad:getLoadingSceneProgress()     return self._loadingScene:getProgress() end  function NormalSceneLoad:startPreLoadNewScene(curScene)     self._sceneAsync = curScene:loadUnitySceneAsync() end  function NormalSceneLoad:getScenePrefab() end  ---@return boolean function NormalSceneLoad:isNewSceneLoadReady()     return self._sceneAsync.isComplete end ---@return number function NormalSceneLoad:getNewSceneLoadProgress()     return self._sceneAsync:getProgress() end  function NormalSceneLoad:onLoadingPanelOpen() end  function NormalSceneLoad:onSceneEnterForeground() end  function NormalSceneLoad:dispose()     if self._isDispose then         return     end     self._isDispose = true     self:disposeLoadingScene()     if self._sceneAsync then         if g.isDestroyed then             self._sceneAsync:sceneReleaseBase()         else             self._sceneAsync:release()         end         self._sceneAsync = nil     end end  -- 完全释放前处理 function NormalSceneLoad:destoryPreDispose() end   -- 完全释放 function NormalSceneLoad:destoryDispose() end  return NormalSceneLoad 

相关内容

热门资讯

总结了解!科乐辅助工作室(辅助... 总结了解!科乐辅助工作室(辅助)嗨麻娱乐好像真的是有辅助平台(哔哩哔哩)1、完成科乐辅助工作室有辅助...
了解了解!yy比鸡辅助真的假的... 了解了解!yy比鸡辅助真的假的(辅助)海潮娱乐一贯真的有辅助下载(哔哩哔哩)1、玩家可以在yy比鸡辅...
普及了解!圣游辅助器(辅助)陌... 普及了解!圣游辅助器(辅助)陌陌骰子原来真的有辅助神器(哔哩哔哩)1、很好的工具软件,可以解锁游戏的...
揭幕了解!破解版财神脚本(辅助... 揭幕了解!破解版财神脚本(辅助)盛趣原来是真的辅助器(哔哩哔哩)亲,关键说明,破解版财神脚本透视脚本...
普及了解!超凡辅助app链接(... 您好,超凡辅助app链接这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多...
开挂了解!乐乐围棋入门破解版(... 开挂了解!乐乐围棋入门破解版(辅助)同城游逮狗腿一直存在有辅助软件(哔哩哔哩)1、金币登录送、破产送...
揭幕了解!全来潜山跑风破解版安... 揭幕了解!全来潜山跑风破解版安卓(辅助)美酒之城其实真的有辅助插件(哔哩哔哩)1、首先打开全来潜山跑...
解密了解!多乐小程序辅助工具(... 解密了解!多乐小程序辅助工具(辅助)开心泉州麻将本来是有辅助挂(哔哩哔哩)1、用户打开应用后不用登录...
辅助了解!决战卡五星辅助修改器... 辅助了解!决战卡五星辅助修改器(辅助)聚乐都是真的有辅助app(哔哩哔哩)1、决战卡五星辅助修改器免...
辅助了解!杭州都莱破解版(辅助... 辅助了解!杭州都莱破解版(辅助)启悦切实真的是有辅助修改器(哔哩哔哩)1、杭州都莱破解版免费脚本咨询...