设计上 定义 `NormalSceneLoad`的类,该类继承自`BaseSceneLoad`。
`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