欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種三維動(dòng)畫引擎的資源加載方法、裝置及系統(tǒng)的制作方法

文檔序號(hào):9597687閱讀:643來源:國(guó)知局
一種三維動(dòng)畫引擎的資源加載方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及計(jì)算機(jī)視頻游戲開發(fā)技術(shù),一種三維動(dòng)畫引擎的資源加載方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]Unity是由Unity Technologies開發(fā)的一個(gè)用于創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。
[0003]鑒于操作平臺(tái)和Unity自身的限制,Unity資源一般都通過打包為資源包(AssetBundle)的方式進(jìn)行動(dòng)態(tài)更新與加載。Unity資源指的是用于生成場(chǎng)景及場(chǎng)景中各種物體的元素,例如模型貼圖素材、場(chǎng)景源文件、插件等。Assetbundle是Unity Pro提供提供的功能,它可以把多個(gè)游戲?qū)ο蠡蛘哔Y源二進(jìn)制文件封裝到Assetbundle中,提供了封裝與解包的方法。
[0004]對(duì)于資源龐大的游戲來說,資源之間的各種依賴關(guān)系處理以及加載的時(shí)間消耗是個(gè)較大的難題,嚴(yán)重影響開發(fā)效率。

【發(fā)明內(nèi)容】

[0005]本申請(qǐng)?zhí)峁┝艘环N三維動(dòng)畫引擎的資源加載方法、裝置及系統(tǒng),能夠很好管理資源的依賴關(guān)系,提升開發(fā)效率。
[0006]本申請(qǐng)實(shí)施例提供了一種三維動(dòng)畫引擎的資源加載方法,在資源打包過程中,將需要打包的資源的依賴信息作為包的主資源,所述資源作為輔資源進(jìn)行打包,該加載方法包括:先通過預(yù)加載目標(biāo)資源的依賴信息來獲取依賴關(guān)系,然后再根據(jù)依賴關(guān)系加載目標(biāo)資源的依賴資源和目標(biāo)資源。
[0007]較佳地,所述先通過預(yù)加載目標(biāo)資源的依賴信息來獲取依賴關(guān)系,然后再根據(jù)依賴關(guān)系加載目標(biāo)資源的依賴資源和目標(biāo)資源包括:
[0008]A、對(duì)于資源加載請(qǐng)求,判斷依賴信息表中是否包含對(duì)應(yīng)資源的依賴關(guān)系,若是,則進(jìn)行步驟B;否則,在加載任務(wù)表中增加一個(gè)依賴信息加載的任務(wù)T1,并將該資源加載請(qǐng)求添加到任務(wù)T1中,然后執(zhí)行步驟C ;
[0009]B、根據(jù)依賴信息表判斷該資源對(duì)象的依賴對(duì)象是否已經(jīng)加載,若是,則進(jìn)行步驟C ;否則在加載任務(wù)表中增加所有依賴對(duì)象的加載任務(wù)T2,并將該資源加載請(qǐng)求添加到加載任務(wù)T2的請(qǐng)求列表中,然后執(zhí)行步驟C ;
[0010]C、在待加載隊(duì)列中添加該資源的加載任務(wù)T3 ;
[0011]D、根據(jù)加載任務(wù)表進(jìn)行資源加載;
[0012]E、判斷待加載隊(duì)列是否為空,若是,結(jié)束本流程;否則,從待加載隊(duì)列中取出一定數(shù)量的任務(wù),添加到加載任務(wù)表中,返回步驟D。
[0013]較佳地,步驟A之前進(jìn)一步包括:
[0014]判斷待加載隊(duì)列中是否已經(jīng)存在對(duì)應(yīng)資源的加載任務(wù),是則將該請(qǐng)求添加到待加載隊(duì)列中的所述加載任務(wù)的請(qǐng)求列表中,然后執(zhí)行步驟D ;否則直接執(zhí)行步驟A。
[0015]較佳地,步驟A之前進(jìn)一步包括:
[0016]對(duì)于資源加載請(qǐng)求,判斷加載任務(wù)表中面是否已經(jīng)存在對(duì)應(yīng)資源的加載任務(wù),若是,則將該資源加載請(qǐng)求添加到加載任務(wù)表中的所述加載任務(wù)的請(qǐng)求列表中,然后執(zhí)行步驟D;否則進(jìn)行步驟A。
[0017]較佳地,步驟A之前進(jìn)一步包括:
[0018]對(duì)于資源加載請(qǐng)求,判斷資源對(duì)象表中是否已經(jīng)存在對(duì)應(yīng)的加載完畢、可以直接進(jìn)行使用的資源對(duì)象,是則增加資源對(duì)象表中該對(duì)象的引用計(jì)數(shù),并直接返回該資源對(duì)象的處理,結(jié)束該資源加載請(qǐng)求;否則進(jìn)行步驟A。
[0019]較佳地,步驟D包括:
[0020]D1、判斷加載任務(wù)的類型,如果為T1,執(zhí)行步驟D2,如果為T2,執(zhí)行步驟D3 ;如果為T3,執(zhí)行步驟D4 ;
[0021]D2、對(duì)于依賴信息加載任務(wù)T1,從目標(biāo)資源包中加載依賴信息并將所述依賴信息加入依賴信息表,然后依次處理該任務(wù)所包含的所有資源加載請(qǐng)求,然后執(zhí)行步驟D5 ;
[0022]D3、對(duì)于所有依賴對(duì)象的加載任務(wù)T2,從依賴資源包中加載該加載任務(wù)對(duì)應(yīng)的資源對(duì)象,將所述資源對(duì)象加入資源對(duì)象表并添加引用計(jì)數(shù)。加載結(jié)束后,依次處理該任務(wù)所包含的所有資源請(qǐng)求:當(dāng)請(qǐng)求資源的依賴資源全部加載完畢后,執(zhí)行步驟D5 ;
[0023]D4、對(duì)于資源的加載任務(wù)T3,從包中加載該加載任務(wù)對(duì)應(yīng)的資源對(duì)象,將所述資源對(duì)象加入資源對(duì)象表并添加引用計(jì)數(shù)。加載結(jié)束后,依次處理該任務(wù)所包含的所有資源請(qǐng)求,然后對(duì)客戶端返回該資源對(duì)象的處理結(jié)果;
[0024]D5、判斷加載任務(wù)表中是否還有未處理的任務(wù),若是,返回步驟D1,否則執(zhí)行步驟
Eo
[0025]較佳地,在服務(wù)器側(cè)和客戶端側(cè),分別通過一個(gè)包信息列表對(duì)本地的資源進(jìn)行維護(hù);步驟A之前進(jìn)一步包括:
[0026]在客戶端啟動(dòng)時(shí),比較本地和服務(wù)器的包信息列表,判斷兩者的校驗(yàn)信息是否一致,若一致,不作進(jìn)一步處理;若不一致,表明有包添加、刪除或者修改,則刪除不需要的包或者向服務(wù)器發(fā)送請(qǐng)求下載發(fā)生變更的包。
[0027]較佳地,該方法進(jìn)一步包括:每隔一段時(shí)間,對(duì)資源對(duì)象表進(jìn)行遍歷,檢查其引用計(jì)數(shù)是否歸0,并判斷其是否為常駐內(nèi)存的類型,對(duì)于引用計(jì)數(shù)為0的非常駐資源,對(duì)其進(jìn)行卸載處理。
[0028]可選地,所述三維動(dòng)畫引擎為Unity引擎。
[0029]本申請(qǐng)實(shí)施例還提供了一種三維動(dòng)畫引擎的資源加載裝置,該裝置包括:
[0030]打包模塊,用于在資源打包過程中,將需要打包的資源的依賴信息作為包的主資源,所述資源作為輔資源進(jìn)行打包;
[0031]預(yù)加載模塊,用于通過預(yù)加載目標(biāo)資源的依賴信息來獲取依賴關(guān)系;
[0032]資源加載模塊,用于根據(jù)依賴關(guān)系加載目標(biāo)資源的依賴資源和目標(biāo)資源。
[0033]較佳地,所述預(yù)加載模塊包括:第一判斷單元、第二判斷單元、依賴信息加載任務(wù)單元和資源加載任務(wù)單元;
[0034]第一判斷單元,用于判斷依賴信息表中是否包含與資源加載請(qǐng)求對(duì)應(yīng)的資源的依賴關(guān)系,若是,使能第二判斷單元;否則,通知依賴信息加載任務(wù)單元在加載任務(wù)表中增加一個(gè)依賴信息加載的任務(wù)T1,并將該資源加載請(qǐng)求添加到任務(wù)T1中;
[0035]第二判斷單元,用于根據(jù)依賴信息表判斷該資源對(duì)象的依賴對(duì)象是否已經(jīng)加載,若是,則通知資源加載任務(wù)單元在待加載隊(duì)列中添加該資源的加載任務(wù)T3;否則,通知依賴信息加載任務(wù)單元在加載任務(wù)表中增加所有依賴對(duì)象的加載任務(wù)T2,并將該資源加載請(qǐng)求添加到加載任務(wù)T2的請(qǐng)求列表中;然后通知資源加載任務(wù)單元在待加載隊(duì)列中添加該資源的加載任務(wù)T3;;
[0036]依賴關(guān)系加載任務(wù)單元,用于根據(jù)來自第一判斷單元的通知,在加載任務(wù)表中增加依賴信息加載的任務(wù)T1,并將該資源加載請(qǐng)求添加到任務(wù)T1中;或者根據(jù)來自第二判斷單元的通知,在加載任務(wù)表中增加所有依賴對(duì)象的加載任務(wù)T2,并將該資源加載請(qǐng)求添加到加載任務(wù)T2的請(qǐng)求列表中;
[0037]資源加載任務(wù)單元,用于根據(jù)來自第二判斷單元的通知,在待加載隊(duì)列中添加該資源的加載任務(wù)T3;
[0038]資源加載模塊包括:加載單元和待加載任務(wù)處理單元;
[0039]加載單元,用于根據(jù)加載任務(wù)表進(jìn)行資源加載;
[0040]待加載任務(wù)處理單元,用于在加載任務(wù)表中的任務(wù)處理完畢后,從待加載隊(duì)列中取出一定數(shù)量的任務(wù),添加到加載任務(wù)表中。
[0041 ] 較佳地,該裝置進(jìn)一步包括:
[0042]待加載判斷模塊,用于判斷待加載隊(duì)列中是否已經(jīng)存在與資源加載請(qǐng)求對(duì)應(yīng)的資源的加載任務(wù),是則將該請(qǐng)求添加到待加載隊(duì)列中的所述加載任務(wù)的請(qǐng)求列表中。
[0043]較佳地,該裝置進(jìn)一步包括:
[0044]加載判斷模塊,用于判斷加載任務(wù)表中面是否已經(jīng)存在與資源加載請(qǐng)求對(duì)應(yīng)的資源的加載任務(wù),若是,則將該資源加載請(qǐng)求添加到加載任務(wù)表中的所述加載任務(wù)的請(qǐng)求列表中。
[0045]較佳地,該裝置進(jìn)一步包括:
[0046]已加載判斷模塊,用于判斷資源對(duì)象表中是否已經(jīng)存在與資源加載請(qǐng)求對(duì)應(yīng)的加載完畢、可以直接進(jìn)行使用的資源對(duì)象,是則增加資源對(duì)象表中該對(duì)象的引用計(jì)數(shù),并直接返回該資源對(duì)象的處理。
[0047]較佳地,加載單元包括:
[0048]任務(wù)類型判斷子單元,用于判斷加載任務(wù)的類型,如果為T1,使能第一加載子單元,如果為T2,使能第二加載子單元;如果為T3,使能第三加載子單元;
[0049]第一加載子單元,對(duì)于依賴信息加載任務(wù)T1,從目標(biāo)資源包中加載依賴信息并將所述依賴信息加入依賴信息表,然后依次處理
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
汾西县| 大兴区| 微山县| 浦东新区| 通辽市| 绥中县| 读书| 西林县| 于都县| 千阳县| 响水县| 蓝山县| 都江堰市| 土默特左旗| 三亚市| 峡江县| 佛学| 江西省| 潞城市| 龙陵县| 呼伦贝尔市| 巫溪县| 页游| 四子王旗| 乌鲁木齐县| 秦安县| 永定县| 海丰县| 崇礼县| 临邑县| 乌什县| 连江县| 故城县| 临西县| 临颍县| 富裕县| 旅游| 万全县| 汉沽区| 政和县| 梅河口市|