首页 > 其他分享 >lua 游戏架构 之 SceneLoad场景加载(二)

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

时间:2024-07-19 22:28:31浏览次数:8  
标签:NormalSceneLoad function 场景 SceneLoad self lua ._ 加载

设计上 定义 `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

标签:NormalSceneLoad,function,场景,SceneLoad,self,lua,._,加载
From: https://blog.csdn.net/heyuchang666/article/details/140560741

相关文章

  • 02-使用BIOS中断 显示字符/读取磁盘 【实现boot中加载loader的功能】
    bios提供了一组服务,可以帮助我们操纵硬件,避免我们直接与硬件细节打交道当触发软中断时,会自动从中断向量表中取出想用的中断程序的首地址,来执行中断程序,参数通过寄存器传递一、Bios的INT10中断INT10中断是BIOS用于控制显示屏的关键接口,包括设置显示器模式、光标管理和显......
  • python里面加载js代码
    有一段js代码constCryptoJS=require("crypto-js")functionl(t,e){returnt.toString().toUpperCase()>e.toString().toUpperCase()?1:t.toString().toUpperCase()==e.toString().toUpperCase()?0:-1}functionu(t){for(vare=Ob......
  • 使用 useLazyAsyncData 提升数据加载体验
    title:使用useLazyAsyncData提升数据加载体验date:2024/7/19updated:2024/7/19author:cmdragonexcerpt:摘要:本文介绍useLazyAsyncData函数在Nuxt3中的使用,以提升数据加载体验。此函数支持异步获取数据并在组件中处理挂起与错误状态,通过pending、error和data属性实......
  • Evaluating the Factuality of Large Language Models using Large-Scale Knowledge G
    本文是LLM系列文章,针对《EvaluatingtheFactualityofLargeLanguageModelsusingLarge-ScaleKnowledgeGraphs》的翻译。使用大规模知识图谱评估大型语言模型的真实性摘要1引言2相关工作3方法4实验5结论摘要大型语言模型(LLMs)的出现极大地改变了人......
  • Pytorch模型文件`*.pt`与`*.pth` 的保存与加载
    1.*.pt文件.pt文件保存的是模型的全部,在加载时可以直接赋值给新变量model=torch.load("filename.pt")。具体操作:(1).模型的保存torch.save(model,"Path/filename.pt")(2).模型的加载model=torch.load("filename.pt")注意:torch.load()的参数使用字符串参数。2..p......
  • 防止提交时重新加载 HTML 页面
    我正在开发一个天文应用程序,该应用程序可以确定太阳的位置以及一天中不同时间产生的阴影长度和阴影方位角。我希望最终将其部署在手机上,因此我使用HTMLGeolocationAPI来获取设备的纬度和经度以及请求位置的时间。有了这些信息,我计算了太阳的位置和我感兴趣的一个名为soalr......
  • ACFI3008 Financial Analysis and Valuation
    ACFI3008FinancialAnalysisandValuationTrimester2,20241. BelowisanarticlepublishedonThe Motley Fool,August7, 10:39amAESTWhyistheResMedsharepricesinkingagainonMonday?ResMedsharesarehavingaverytoughtimethismonth.TheMotl......
  • 免费图床之选:高速 CDN 护航,稳定可靠,卓越体验,加载如风,长期使用佳选
    免费图床之选:高速CDN护航,稳定可靠,卓越体验,加载如风,长期使用佳选在如今的互联网时代,图片的存储和加载速度对于网站运营者、博主以及各类需要频繁使用图片的用户来说至关重要。今天,就为大家带来几款免费图床的精选推荐,它们都具备高速CDN护航、稳定可靠的特点,能为您带来卓......
  • sqlserver 在尝试加载程序集 ID 65537 时 Microsoft .NET Framework 出错.服务器可能
    报错信息:1234567891011处理报表时出错。对数据集“query”执行查询失败。在尝试加载程序集ID65536时Microsoft.NETFramework出错。服务器可能资源不足,或者不信任该程序集,因为它的PERMISSION_SET设置为EXTERNAL_ACCESS或UNSAFE。请重新运行查......
  • 整合Maven后加载不到Jar包解决方案
    简介:在整合Maven项目时,有时可能会遇到无法加载Jar包的问题。本文将提供解决此问题的方法和步骤,帮助您顺利解决加载不到Jar包的困境。当您在整合Maven项目后遇到无法加载Jar包的问题时,这通常是由于以下原因之一导致的:1、Maven依赖未正确配置:确保您的pom.xml文件中正确配置了......