本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體而言,涉及一種資源加載、資源文件的生成方法及裝置。
背景技術(shù):
unity游戲?qū)Y源進(jìn)行增量更新需要用到assetbundle機(jī)制,即將游戲資源打包成.unity3d格式文件,于游戲運(yùn)行時(shí)加載。但游戲資源間存在非常復(fù)雜的依賴關(guān)系?,F(xiàn)有的unity資源打包方案一般是利用打包資源時(shí)默認(rèn)的完整性打包,即將所依賴的資源都默認(rèn)構(gòu)建在同一個(gè)文件中,以使得此資源完整可用?;蛘呤菂^(qū)分目錄,將部分路徑下的資源獨(dú)立構(gòu)建后,再通過依賴關(guān)系構(gòu)建依賴這些獨(dú)立構(gòu)建的資源的資源。但這種簡單的依賴關(guān)系會導(dǎo)致資源的碎片化,在提升加載資源io的消耗的同時(shí)不一定能有效地精簡資源占用,但帶來的加載釋放時(shí)卡頓現(xiàn)象會很嚴(yán)重,影響了玩家的體驗(yàn)度。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種資源加載、資源文件的生成方法及裝置,以至少解決現(xiàn)有技術(shù)中游戲運(yùn)行流暢度低的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種資源加載方法,包括:在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到所述游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);在檢測到跳轉(zhuǎn)到所述游戲應(yīng)用中的ui系統(tǒng)的情況下,獲取所述ui系統(tǒng)所需的一個(gè)第一資源文件,并加載所述第一資源文件中的資源,其中,所述第一資源文件中包括所述ui系統(tǒng)所需的資源以及所述ui系統(tǒng)所需的資源所依賴的資源;在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取所述場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)所述多個(gè)第二資源文件之間的依賴關(guān)系對所述多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)所述第二資源文件包括一個(gè)或多個(gè)資源。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種資源文件的生成方法,其特征在于,包括:檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為所述游戲應(yīng)用中的場景系統(tǒng)生成資源文件;在檢測出需要為所述游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成所述ui系統(tǒng)所需的一個(gè)第一資源文件,其中,所述第一資源文件中包括所述ui系統(tǒng)所需的資源以及所述ui系統(tǒng)所需的資源所依賴的資源;在檢測出需要為所述游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成所述場景系統(tǒng)所需的多個(gè)第二資源文件,其中,所述多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)所述第二資源文件包括一個(gè)或多個(gè)資源。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種資源加載裝置,包括:第一檢測模塊,用于在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到所述游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);第一處理模塊,用于在檢測到跳轉(zhuǎn)到所述游戲應(yīng)用中的ui系統(tǒng)的情況下,獲取所述ui系統(tǒng)所需的一個(gè)第一資源文件,并加載所述第一資源文件中的資源,其中,所述第一資源文件中包括所述ui系統(tǒng)所需的資源以及所述ui系統(tǒng)所需的資源所依賴的資源;第二處理模塊,用于在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取所述場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)所述多個(gè)第二資源文件之間的依賴關(guān)系對所述多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)所述第二資源文件包括一個(gè)或多個(gè)資源。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種資源文件的生成裝置,包括:第三檢測模塊,用于檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為所述游戲應(yīng)用中的場景系統(tǒng)生成資源文件;第一生成模塊,用于在檢測出需要為所述游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成所述ui系統(tǒng)所需的一個(gè)第一資源文件,其中,所述第一資源文件中包括所述ui系統(tǒng)所需的資源以及所述ui系統(tǒng)所需的資源所依賴的資源;第二生成模塊,用于在檢測出需要為所述游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成所述場景系統(tǒng)所需的多個(gè)第二資源文件,其中,所述多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)所述第二資源文件包括一個(gè)或多個(gè)資源。
在本發(fā)明實(shí)施例中,在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);在檢測到跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況下,獲取ui系統(tǒng)所需的一個(gè)第一資源文件,并加載第一資源文件中的資源,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及所需的資源所依賴的資源;在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。也就是說,在游戲應(yīng)用的運(yùn)行過程中,對游戲中系統(tǒng)的切換進(jìn)行檢測,比如檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng),對于跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況,由于該ui系統(tǒng)所需的資源以及所需的資源所依賴的資源均構(gòu)建在了一個(gè)第一資源文件中,只需獲取這一個(gè)第一資源文件并加載其中的資源即可跳轉(zhuǎn)到該ui系統(tǒng),對于進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況,可以獲取該場景系統(tǒng)所需的具有依賴關(guān)系的多個(gè)第二資源文件,并根據(jù)依賴關(guān)系加載多個(gè)第二資源文件中的資源,可見,對于ui系統(tǒng)將需要的資源通過一個(gè)第一資源文件加載,可以減少讀取資源的次數(shù),從而提高了游戲運(yùn)行的流暢度,而對于場景系統(tǒng)則根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系加載資源,減少了場景系統(tǒng)下資源的冗余度,從而也減少了場景系統(tǒng)下資源對磁盤的占用,提高了游戲運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲運(yùn)行流暢度低的問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的資源加載方法的應(yīng)用環(huán)境示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的資源加載方法的示意圖;
圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的為ui系統(tǒng)的示意圖;
圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的為場景系統(tǒng)的示意圖;
圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的為場景系統(tǒng)加載界面的示意圖;
圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的資源文件的生成方法的應(yīng)用環(huán)境示意圖;
圖7是根據(jù)本發(fā)明實(shí)施例的一種可選的資源文件的生成方法的示意圖;
圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的為ui系統(tǒng)資源文件生成的示意圖;
圖9是根據(jù)本發(fā)明實(shí)施例的一種可選的為場景系統(tǒng)資源文件生成的示意圖;
圖10是根據(jù)本發(fā)明實(shí)施例的一種可選的資源加載裝置的示意圖;
圖11是根據(jù)本發(fā)明實(shí)施例的一種可選的資源文件的生成裝置的示意圖;
圖12是根據(jù)本發(fā)明實(shí)施例的一種可選的資源加載設(shè)備的示意圖;以及
圖13是根據(jù)本發(fā)明實(shí)施例的一種可選的資源文件的生成設(shè)備的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實(shí)施例1
在本發(fā)明實(shí)施例中,提供了一種上述資源加載方法的實(shí)施例。作為一種可選的實(shí)施方式,該資源加載方法可以但不限于應(yīng)用于如圖1所示的應(yīng)用環(huán)境中,終端102中安裝有游戲應(yīng)用的客戶端,終端102用于在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);在檢測到跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況下,獲取ui系統(tǒng)所需的一個(gè)第一資源文件,并加載第一資源文件中的資源,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及所需的資源所依賴的資源;在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
在本實(shí)施例中,終端102在游戲應(yīng)用的運(yùn)行過程中,對游戲中系統(tǒng)的切換進(jìn)行檢測,比如檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng),對于跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況,由于該ui系統(tǒng)所需的資源以及所需的資源所依賴的資源均構(gòu)建在了一個(gè)第一資源文件中,只需獲取這一個(gè)第一資源文件并加載其中的資源即可跳轉(zhuǎn)到該ui系統(tǒng),對于進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況,可以獲取該場景系統(tǒng)所需的具有依賴關(guān)系的多個(gè)第二資源文件,并根據(jù)依賴關(guān)系加載多個(gè)第二資源文件中的資源,可見,對于ui系統(tǒng)將需要的資源通過一個(gè)第一資源文件加載,可以減少讀取資源的次數(shù),從而提高了游戲運(yùn)行的流暢度,而對于場景系統(tǒng)則根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系加載資源,減少了場景系統(tǒng)下資源的冗余度,從而也減少了場景系統(tǒng)下資源對磁盤的占用,提高了游戲運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲運(yùn)行流暢度低的問題。
可選地,在本實(shí)施例中,上述終端可以包括但不限于以下至少之一:手機(jī)、平板電腦、筆記本電腦、臺式pc機(jī)、數(shù)字電視及其他進(jìn)行資源加載的硬件設(shè)備。上述只是一種示例,本實(shí)施例對此不做任何限定。
可選地,在本實(shí)施例中,終端102用于:通過一次io讀取來獲取一個(gè)第一資源文件。
可選地,在本實(shí)施例中,終端102用于:在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件進(jìn)行加載。
可選地,在本實(shí)施例中,終端102用于:檢測是否需要加載通用資源,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);在檢測到需要加載通用資源時(shí),獲取根據(jù)通用資源和通用資源所依賴的資源生成的多個(gè)第三資源文件;加載多個(gè)第三資源文件中的資源。
可選地,在本實(shí)施例中,終端102用于:對多個(gè)第三資源文件中的第一部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;按照通用資源與通用資源所依賴的資源之間的依賴關(guān)系,對多個(gè)第三資源文件中的第二部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
可選地,在本實(shí)施例中,上述應(yīng)用環(huán)境中還可以包括:服務(wù)器和網(wǎng)絡(luò),其中,上述終端102通過網(wǎng)絡(luò)與服務(wù)器連接,服務(wù)器用于:通過網(wǎng)絡(luò)為終端102提供ui系統(tǒng)所需的一個(gè)第一資源文件或者場景系統(tǒng)所需的多個(gè)第二資源文件。
可選地,在本實(shí)施例中,上述網(wǎng)絡(luò)可以包括但不限于以下至少之一:廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)。上述只是一種示例,本實(shí)施例對此不做任何限定。
根據(jù)本發(fā)明實(shí)施例,提供了一種資源加載方法,如圖2所示,該方法包括:
s202,在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);
s204,在檢測到跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況下,獲取ui系統(tǒng)所需的一個(gè)第一資源文件,并加載第一資源文件中的資源,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及所需的資源所依賴的資源;
s206,在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
可選地,在本實(shí)施例中,上述資源加載方法可以但不限于應(yīng)用于游戲應(yīng)用客戶端運(yùn)行過程中加載資源的場景。其中,上述游戲應(yīng)用客戶端可以但不限于為各種類型的游戲,例如,對戰(zhàn)類游戲、消除類游戲、角色扮演類游戲、射擊類游戲等等。上述僅是一種示例,本實(shí)施例中對此不做任何限定。
可選地,在本實(shí)施例中,上述ui系統(tǒng)可以但不限于包括游戲中的菜單界面、狀態(tài)界面、技能界面、商城界面、游戲模式選擇界面、關(guān)卡選擇界面等等。
例如:以關(guān)卡選擇界面為例,如圖3所示,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源包括各個(gè)關(guān)卡的選項(xiàng)卡,游戲模式選項(xiàng)“自動(dòng)”和“戰(zhàn)斗”等等,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源所依賴的資源包括各個(gè)關(guān)卡的選項(xiàng)卡中的貼圖、文字描述、關(guān)卡難易程度的標(biāo)簽(例如:關(guān)卡2對應(yīng)標(biāo)簽“困難”)等等,這些資源都被打包在第一資源文件中,也就是說,加載了第一資源文件就相當(dāng)于加載了跳轉(zhuǎn)到該ui系統(tǒng)所需的全部資源。
可選地,在本實(shí)施例中,上述場景系統(tǒng)可以但不限于包括射擊游戲中的戰(zhàn)斗場景、對戰(zhàn)游戲中的對戰(zhàn)場景、競速類游戲中的競技場景、體育類游戲中的比賽場景等等。
例如:以射擊游戲中的戰(zhàn)斗場景為例,如圖4所示,場景系統(tǒng)中包括了各種資源,例如:場景、樹木、麻袋、箱子等等,這些資源被打包在多個(gè)第二資源文件,這多個(gè)第二資源文件之間具有依賴關(guān)系,比如,該場景系統(tǒng)下的多個(gè)場景中均有樹木、麻袋和箱子,那么獲取的多個(gè)第二資源文件中可以包括多個(gè)打包有不同場景資源的第二資源文件以及打包有樹木資源的第二資源文件、打包有麻袋資源的第二資源文件和打包有箱子資源的第二資源文件各一個(gè),那么在加載的過程中,可以先加載樹木、箱子、麻袋的第二資源文件,再在需要進(jìn)入各個(gè)場景時(shí)分別加載對應(yīng)場景的第二資源文件。
可見,通過上述步驟,在游戲應(yīng)用的運(yùn)行過程中,對游戲中系統(tǒng)的切換進(jìn)行檢測,比如檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng),對于跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況,由于該ui系統(tǒng)所需的資源以及所需的資源所依賴的資源均構(gòu)建在了一個(gè)第一資源文件中,只需獲取這一個(gè)第一資源文件并加載其中的資源即可跳轉(zhuǎn)到該ui系統(tǒng),對于進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況,可以獲取該場景系統(tǒng)所需的具有依賴關(guān)系的多個(gè)第二資源文件,并根據(jù)依賴關(guān)系加載多個(gè)第二資源文件中的資源,可見,對于ui系統(tǒng)將需要的資源通過一個(gè)第一資源文件加載,可以減少讀取資源的次數(shù),從而提高了游戲運(yùn)行的流暢度,而對于場景系統(tǒng)則根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系加載資源,減少了場景系統(tǒng)下資源的冗余度,從而也減少了場景系統(tǒng)下資源對磁盤的占用,提高了游戲運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲運(yùn)行流暢度低的問題。
作為一種可選的方案,獲取ui系統(tǒng)所需的一個(gè)第一資源文件包括:
s1,通過一次io讀取來獲取一個(gè)第一資源文件。
可選地,在本實(shí)施例中,由于ui系統(tǒng)所需的資源均被打包在一個(gè)第一資源文件中,那么,在獲取這個(gè)第一資源文件時(shí)可以通過一次io讀取來得到該第一資源文件。當(dāng)玩家在操作ui界面的時(shí)候,玩家會要求界面的流暢度,不會有卡頓的感覺,包括界面的滑進(jìn)滑出等動(dòng)畫效果也需要流暢。通過上述步驟,可以大大減少在加載ui系統(tǒng)時(shí)的io讀取次數(shù),從而減少加載資源時(shí)的io消耗,提高了游戲運(yùn)行的流暢度。
作為一種可選的方案,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件進(jìn)行加載包括:
s1,在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件進(jìn)行加載。
可選地,在本實(shí)施例中,可以在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,對場景系統(tǒng)所需的多個(gè)第二資源文件進(jìn)行獲取和加載,在這個(gè)加載的過程中,游戲界面上可以顯示對玩家的提示信息,游戲壁紙畫等內(nèi)容。
例如:如圖5所示,在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,先跳轉(zhuǎn)到加載多個(gè)第二資源文件的界面,在該界面中,展示了裝備的合成途徑,并在右下角以“l(fā)oading…”的形式提示用戶正在加載資源。
當(dāng)玩家在游戲內(nèi)進(jìn)行戰(zhàn)斗的時(shí)候,就是游戲最核心的玩法,必須得保證游戲流暢,因?yàn)榭赡苌晕⒌目D也會影響游戲結(jié)果,玩家對于戰(zhàn)斗中的卡頓也會非常地介意。玩家在游戲前會進(jìn)行一小段時(shí)間的資源預(yù)加載,這個(gè)時(shí)間對于玩家來說是有預(yù)期的,只要不是時(shí)間非常長,對于玩家來說,都不會是影響體驗(yàn)的問題。
通過上述步驟,在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,對場景系統(tǒng)所需的多個(gè)第二資源文件進(jìn)行獲取和加載,可以避免在場景系統(tǒng)運(yùn)行時(shí)獲取和加載資源,從而減少了場景系統(tǒng)運(yùn)行時(shí)加載資源對內(nèi)存的占用,提高了游戲運(yùn)行的流暢度。
作為一種可選的方案,在游戲應(yīng)用運(yùn)行的過程中,還包括:
s1,檢測是否需要加載通用資源,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);
s2,在檢測到需要加載通用資源時(shí),獲取根據(jù)通用資源和通用資源所依賴的資源生成的多個(gè)第三資源文件;
s3,加載多個(gè)第三資源文件中的資源。
可選地,在本實(shí)施例中,上述通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng)。例如:音效資源、裝備資源等等。
可選地,在本實(shí)施例中,可以但不限于通過以下方式加載多個(gè)第三資源文件中的資源:對多個(gè)第三資源文件中的第一部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源,再按照通用資源與通用資源所依賴的資源之間的依賴關(guān)系,對多個(gè)第三資源文件中的第二部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
例如:在檢測到需要加載通用資源a時(shí),獲取根據(jù)該通用資源a和通用資源a所依賴的資源b、c、d生成的兩個(gè)第三資源文件e和第三資源文件f,其中,第三資源文件e中打包了資源a、c、d,第三資源文件f中打包了資源b,由于通用資源a依賴于資源b,那么在加載時(shí),先加載第三資源文件f,再加載第三資源文件e來實(shí)現(xiàn)對通用資源a的加載。
可見,通過上述步驟,在游戲應(yīng)用運(yùn)行的過程中,檢測是否需要加載被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng)的通用資源,在需要加載通用資源時(shí)再對通用資源進(jìn)行加載,可以避免在游戲應(yīng)用運(yùn)行的過程中加載過多的冗余的資源,在需要用到通用資源時(shí),再根據(jù)依賴關(guān)系對通用資源進(jìn)行加載,從而減少了資源加載時(shí)的冗余度和下載量,提高了游戲運(yùn)行的流暢度。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
實(shí)施例2
在本發(fā)明實(shí)施例中,提供了一種上述資源文件的生成方法的實(shí)施例。作為一種可選的實(shí)施方式,該資源文件的生成方法可以但不限于應(yīng)用于如圖6所示的應(yīng)用環(huán)境中,服務(wù)器602用于檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件;在檢測出需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成ui系統(tǒng)所需的一個(gè)第一資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及所需的資源所依賴的資源;在檢測出需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成場景系統(tǒng)所需的多個(gè)第二資源文件,其中,多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
在本實(shí)施例中,服務(wù)器602根據(jù)游戲應(yīng)用運(yùn)行中的系統(tǒng)類型生成資源文件,對于ui系統(tǒng),將ui系統(tǒng)所需的資源以及所需的資源所依賴的資源打包到一個(gè)第一資源文件中,從而生成一個(gè)第一資源文件,在加載ui系統(tǒng)時(shí),只需加載這一個(gè)第一資源文件即可,減少了加載資源時(shí)的io讀取次數(shù),減少了io消耗,從而提高了游戲應(yīng)用運(yùn)行的流暢度,對于場景系統(tǒng),根據(jù)資源之間的依賴關(guān)系生成多個(gè)第二資源文件,從而減少了資源的冗余度以及資源的下載量,減少了游戲應(yīng)用運(yùn)行時(shí)資源加載對內(nèi)存的消耗,從而提高了現(xiàn)有技術(shù)中游戲應(yīng)用運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲應(yīng)用運(yùn)行的流暢度低的問題。
可選地,在本實(shí)施例中,上述服務(wù)器可以包括但不限于以下至少之一:手機(jī)、平板電腦、筆記本電腦、臺式pc機(jī)、數(shù)字電視及其他進(jìn)行資源文件生成的硬件設(shè)備。上述只是一種示例,本實(shí)施例對此不做任何限定。
可選地,在本實(shí)施例中,服務(wù)器602用于:獲取ui系統(tǒng)所需的資源以及該所需的資源所依賴的資源;將ui系統(tǒng)所需的資源以及所需的資源所依賴的資源構(gòu)建在一個(gè)第一資源文件中,得到一個(gè)第一資源文件。
可選地,在本實(shí)施例中,服務(wù)器602用于:獲取場景系統(tǒng)資源以及該場景系統(tǒng)資源所依賴的資源;根據(jù)場景系統(tǒng)資源以及該場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系為場景系統(tǒng)構(gòu)建多個(gè)第二資源文件。
可選地,在本實(shí)施例中,服務(wù)器602用于:分別將場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源構(gòu)建在資源文件中,得到多個(gè)第二資源文件,其中,每個(gè)場景系統(tǒng)資源構(gòu)建在一個(gè)第二資源文件中,場景系統(tǒng)資源所依賴的每個(gè)資源構(gòu)建在一個(gè)第二資源文件中;根據(jù)場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系記錄多個(gè)第二資源文件之間的依賴關(guān)系。
可選地,在本實(shí)施例中,服務(wù)器602用于:檢測是否需要根據(jù)通用資源生成資源文件,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);在檢測到需要根據(jù)通用資源生成資源文件時(shí),根據(jù)通用資源和通用資源所依賴的資源生成多個(gè)第三資源文件。
可選地,在本實(shí)施例中,服務(wù)器602用于:生成多個(gè)第三資源文件中的第一部分資源文件,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;生成多個(gè)第三資源文件中的第二部分資源文件,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
可選地,在本實(shí)施例中,服務(wù)器602用于:獲取通用資源所依賴的資源以及通用資源所依賴的資源中每個(gè)資源的特征值,其中,資源的特征值根據(jù)資源的資源大小與資源被依賴的次數(shù)得到;將通用資源所依賴的資源中特征值大于預(yù)定閾值的資源分別構(gòu)建在一個(gè)資源文件中,得到第一部分資源文件。
可選地,在本實(shí)施例中,服務(wù)器602用于:將每個(gè)所述通用資源與所述每個(gè)所述通用資源所依賴的資源中所述特征值小于或等于所述預(yù)定閾值的資源構(gòu)建在一個(gè)資源文件,得到所述第二部分資源文件。
根據(jù)本發(fā)明實(shí)施例,提供了一種資源文件的生成方法,如圖7所示,該方法包括:
s702,檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件;
s704,在檢測出需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成ui系統(tǒng)所需的一個(gè)第一資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;
s706,在檢測出需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成場景系統(tǒng)所需的多個(gè)第二資源文件,其中,多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
可選地,在本實(shí)施例中,上述資源文件的生成方法可以但不限于應(yīng)用于生成游戲資源文件的場景中。
可選地,在本實(shí)施例中,上述ui系統(tǒng)可以但不限于包括游戲中的菜單界面、狀態(tài)界面、技能界面、商城界面、游戲模式選擇界面、關(guān)卡選擇界面等等。
例如:以關(guān)卡選擇界面為例,如圖3所示,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源包括各個(gè)關(guān)卡的選項(xiàng)卡,游戲模式選項(xiàng)“自動(dòng)”和“戰(zhàn)斗”等等,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源所依賴的資源包括各個(gè)關(guān)卡的選項(xiàng)卡中的貼圖、文字描述、關(guān)卡難易程度的標(biāo)簽(例如:關(guān)卡2對應(yīng)標(biāo)簽“困難”)等等,這些資源都被打包在第一資源文件中,也就是說,加載了第一資源文件就相當(dāng)于加載了跳轉(zhuǎn)到該ui系統(tǒng)所需的全部資源。
可選地,在本實(shí)施例中,上述場景系統(tǒng)可以但不限于包括射擊游戲中的戰(zhàn)斗場景、對戰(zhàn)游戲中的對戰(zhàn)場景、競速類游戲中的競技場景、體育類游戲中的比賽場景等等。
例如:以射擊游戲中的戰(zhàn)斗場景為例,如圖4所示,場景系統(tǒng)中包括了各種資源,例如:場景、樹木、麻袋、箱子等等,這些資源被打包在多個(gè)第二資源文件,這多個(gè)第二資源文件之間具有依賴關(guān)系,比如,該場景系統(tǒng)下的多個(gè)場景中均有樹木、麻袋和箱子,那么獲取的多個(gè)第二資源文件中可以包括多個(gè)打包有不同場景資源的第二資源文件以及打包有樹木資源的第二資源文件、打包有麻袋資源的第二資源文件和打包有箱子資源的第二資源文件各一個(gè),那么在加載的過程中,可以先加載樹木、箱子、麻袋的第二資源文件,再在需要進(jìn)入各個(gè)場景時(shí)分別加載對應(yīng)場景的第二資源文件。
可見,通過上述步驟,根據(jù)游戲應(yīng)用運(yùn)行中的系統(tǒng)類型生成資源文件,對于ui系統(tǒng),將ui系統(tǒng)所需的資源以及所需的資源所依賴的資源打包到一個(gè)第一資源文件中,從而生成一個(gè)第一資源文件,在加載ui系統(tǒng)時(shí),只需加載這一個(gè)第一資源文件即可,減少了加載資源時(shí)的io讀取次數(shù),減少了io消耗,從而提高了游戲應(yīng)用運(yùn)行的流暢度,對于場景系統(tǒng),根據(jù)資源之間的依賴關(guān)系生成多個(gè)第二資源文件,從而減少了資源的冗余度以及資源的下載量,減少了游戲應(yīng)用運(yùn)行時(shí)資源加載對內(nèi)存的消耗,從而提高了現(xiàn)有技術(shù)中游戲應(yīng)用運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲應(yīng)用運(yùn)行的流暢度低的問題。
作為一種可選的方案,生成ui系統(tǒng)所需的一個(gè)第一資源文件包括:
s1,獲取ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;
s2,將ui系統(tǒng)所需的資源以及所需的資源所依賴的資源構(gòu)建在一個(gè)第一資源文件中,得到一個(gè)第一資源文件。
可選地,在本實(shí)施例中,對于游戲應(yīng)用的ui系統(tǒng),區(qū)分每個(gè)系統(tǒng)自己用到的資源。例如貼圖,除了一張公用的貼圖集,每個(gè)系統(tǒng)需管理自身的圖集。這樣能杜絕某張圖集被多個(gè)系統(tǒng)同時(shí)依賴,整體構(gòu)建導(dǎo)致冗余,分開構(gòu)建又會增加文件個(gè)數(shù)導(dǎo)致加載時(shí)io增加。所以針對游戲應(yīng)用的ui系統(tǒng),每個(gè)系統(tǒng)獨(dú)享自己的資源,將ui系統(tǒng)和其所依賴的資源整合打包在一個(gè)產(chǎn)出文件(即第一資源文件)里。
例如:如圖8所示,在生成ui系統(tǒng)a的資源文件時(shí),獲取到ui系統(tǒng)所需的資源objecta以及該所需的資源objecta所依賴的資源objectb和貼圖資源,將獲取到的objecta、objectb和貼圖資源構(gòu)建在一個(gè)產(chǎn)出文件中,生成第一資源文件a.unity3d。
通過上述步驟,游戲運(yùn)行時(shí),跳轉(zhuǎn)到某個(gè)ui系統(tǒng)時(shí)只需要加載這個(gè)整體的第一資源文件,只進(jìn)行一次io讀取即可。既大大降低io次數(shù),也大大減少因?yàn)槊總€(gè)文件太小導(dǎo)致的每次io讀取浪費(fèi)太多,從而提高了游戲運(yùn)行的流暢度。
作為一種可選的方案,生成場景系統(tǒng)所需的多個(gè)第二資源文件包括:
s1,獲取場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源;
s2,根據(jù)場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系為場景系統(tǒng)構(gòu)建多個(gè)第二資源文件
可選地,在本實(shí)施例中,可以通過以下方式構(gòu)建多個(gè)第二資源文件:分別將場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源構(gòu)建在資源文件中,得到多個(gè)第二資源文件,其中,每個(gè)場景系統(tǒng)資源構(gòu)建在一個(gè)第二資源文件中,場景系統(tǒng)資源所依賴的每個(gè)資源構(gòu)建在一個(gè)第二資源文件中,并根據(jù)場景系統(tǒng)資源以及該場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系記錄多個(gè)第二資源文件之間的依賴關(guān)系。
可選地,在本實(shí)施例中,對于游戲應(yīng)用內(nèi)的場景系統(tǒng)的資源(例如:戰(zhàn)斗資源)可以采取的方式是盡可能獨(dú)立構(gòu)建資源文件。在進(jìn)入游戲戰(zhàn)斗場景之前,都會進(jìn)行一段時(shí)間的加載和預(yù)加載。會有如圖5所示的一個(gè)專門的界面顯示加載中,在這個(gè)時(shí)間點(diǎn),多一些少一些時(shí)間,只要不太過分甚至卡死不動(dòng),對于玩家來說都是可以接受的。當(dāng)采用盡可能獨(dú)立構(gòu)建資源的時(shí)候,會產(chǎn)生很多的零散資源文件,加載的時(shí)候,確實(shí)會需要更多的cpu和內(nèi)存占用,但玩家?guī)缀醪煊X不出來。
例如:如圖9所示,在生成戰(zhàn)斗系統(tǒng)a的資源文件時(shí),獲取到戰(zhàn)斗系統(tǒng)a所需的資源objecta以及該所需的資源objecta所依賴的資源objectb和貼圖資源,分別將獲取到的objecta、objectb和貼圖資源構(gòu)建在三個(gè)產(chǎn)出文件中,生成多個(gè)第二資源文件a.unity3d、b.unity3d和atlas.unity3d。
可見,通過上述步驟,大大減少了場景系統(tǒng)資源的冗余度,也就是大大減少資源的磁盤占用。這同時(shí)也會降低玩家的資源下載量,而且量級上十分顯著,對于游戲整體評價(jià)和數(shù)據(jù)也會有積極的提升。
作為一種可選的方案,在檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為所述游戲應(yīng)用中的場景系統(tǒng)生成資源文件時(shí),還包括:
s1,檢測是否需要根據(jù)通用資源生成資源文件,其中,所述通用資源被設(shè)置為用于所述ui系統(tǒng)和所述場景系統(tǒng);
s2,在檢測到需要根據(jù)通用資源生成資源文件時(shí),根據(jù)通用資源和通用資源所依賴的資源生成多個(gè)第三資源文件。
可選地,在本實(shí)施例中,可以通過以下方式生成多個(gè)第三資源文件:生成多個(gè)第三資源文件中的第一部分資源文件,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;生成多個(gè)第三資源文件中的第二部分資源文件,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
可選地,在本實(shí)施例中,可以通過以下方式生成多個(gè)第三資源文件中的第一部分資源文件:獲取通用資源所依賴的資源以及通用資源所依賴的資源中每個(gè)資源的特征值,其中,資源的特征值根據(jù)資源的資源大小與資源被依賴的次數(shù)得到;將通用資源所依賴的資源中特征值大于預(yù)定閾值的資源分別構(gòu)建在一個(gè)資源文件中,得到第一部分資源文件。
可選地,在本實(shí)施例中,可以通過以下方式生成多個(gè)第三資源文件中的第二部分資源文件:將每個(gè)通用資源與每個(gè)通用資源所依賴的資源中特征值小于或等于預(yù)定閾值的資源構(gòu)建在一個(gè)資源文件,得到第二部分資源文件。
可選地,在本實(shí)施例中,可以記錄第一部分資源文件和第二部分資源文件之間的依賴關(guān)系,將生成的具有依賴關(guān)系的第一部分資源文件和第二部分資源文件作為多個(gè)第三資源文件。
例如:需要構(gòu)建的通用資源為通用資源a、通用資源b和通用資源c,通用資源a依賴的資源有資源d、資源e、資源f,通用資源b依賴的資源有資源e、資源f和資源g,通用資源c依賴的資源有資源e和資源f,那么,通過計(jì)算得到資源d、資源e、資源f、資源g的特征值分別為1、3、3、1,為通用資源所依賴的資源中特征值大于2的資源分別構(gòu)建資源文件,得到第一部分資源文件e.unity3d、f.unity3d。為通用資源與通用資源所依賴的資源中特征值不大于2的資源構(gòu)建資源文件,得到第二部分資源文件a.unity3d、b.unity3d和c.unity3d,其中,a.unity3d中包括通用資源a和資源d,b.unity3d中包括通用資源b和資源g,c.unity3d中包括通用資源c。記錄生成的資源文件中的依賴關(guān)系:a.unity3d、b.unity3d和c.unity3d均依賴于e.unity3d、f.unity3d,從而得到多個(gè)第三資源文件。
在一個(gè)示例中,對于通用資源,因?yàn)椴淮嬖谙裆鲜鰑i系統(tǒng)資源和場景系統(tǒng)資源的特殊性,所以可以使用下面的方式來進(jìn)行構(gòu)建。最終的目標(biāo),就是使得資源細(xì)分的顆粒度和冗余度,達(dá)到一個(gè)合理的平衡點(diǎn)。可以通過以下步驟為通用資源生成資源文件:
步驟1,獲取每個(gè)需要構(gòu)建的通用資源所依賴的所有資源。
步驟2,將有被多個(gè)資源所依賴的資源提出到被依賴資源列表中,并統(tǒng)計(jì)其被依賴的次數(shù)。
步驟3,對被依賴資源列表中的資源進(jìn)行降序排序,計(jì)算資源的特征值=資源大小*(資源被依賴次數(shù)-1)。
步驟4,取定閥值(相當(dāng)于上述預(yù)設(shè)條件),將前n個(gè)資源進(jìn)行依賴堆棧的壓棧,并進(jìn)行獨(dú)立構(gòu)建,得到上述第一部分資源文件。
步驟5,構(gòu)建完所依賴資源后,壓入所需的上層資源,并進(jìn)行資源文件的構(gòu)建,得到上述第二部分資源文件。
其中步驟3里面的特征值表示一旦將被依賴的本資源獨(dú)立構(gòu)建出去,能獲得的冗余收益,該值越大,獨(dú)立構(gòu)建帶來的資源冗余越少。
對于這些通用資源,為了避免頻繁加載卸載,程序中還會有資源加載系統(tǒng)對其進(jìn)行管理。加載資源后,先緩存在內(nèi)存,不急著卸載,避免引起gc的過度消耗。同時(shí)制定緩存?zhèn)€數(shù)和空間的閥值,使用lru算法,淘汰最長時(shí)間未使用的緩存資源。這樣做以達(dá)到避免頻繁io和頻繁gc的過度消耗。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
實(shí)施例3
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述資源加載方法的資源加載裝置,如圖10所示,該裝置包括:
1)第一檢測模塊1002,用于在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);
2)第一處理模塊1004,耦合至第一檢測模塊1002,用于在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);
3)第二處理模塊1006,耦合至第一檢測模塊1002,用于在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
可選地,在本實(shí)施例中,上述資源加載裝置可以但不限于應(yīng)用于游戲應(yīng)用客戶端運(yùn)行過程中加載資源的場景。其中,上述游戲應(yīng)用客戶端可以但不限于為各種類型的游戲,例如,對戰(zhàn)類游戲、消除類游戲、角色扮演類游戲、射擊類游戲等等。上述僅是一種示例,本實(shí)施例中對此不做任何限定。
可選地,在本實(shí)施例中,上述ui系統(tǒng)可以但不限于包括游戲中的菜單界面、狀態(tài)界面、技能界面、商城界面、游戲模式選擇界面、關(guān)卡選擇界面等等。
例如:以關(guān)卡選擇界面為例,如圖3所示,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源包括各個(gè)關(guān)卡的選項(xiàng)卡,游戲模式選項(xiàng)“自動(dòng)”和“戰(zhàn)斗”等等,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源所依賴的資源包括各個(gè)關(guān)卡的選項(xiàng)卡中的貼圖、文字描述、關(guān)卡難易程度的標(biāo)簽(例如:關(guān)卡2對應(yīng)標(biāo)簽“困難”)等等,這些資源都被打包在第一資源文件中,也就是說,加載了第一資源文件就相當(dāng)于加載了跳轉(zhuǎn)到該ui系統(tǒng)所需的全部資源。
可選地,在本實(shí)施例中,上述場景系統(tǒng)可以但不限于包括射擊游戲中的戰(zhàn)斗場景、對戰(zhàn)游戲中的對戰(zhàn)場景、競速類游戲中的競技場景、體育類游戲中的比賽場景等等。
例如:以射擊游戲中的戰(zhàn)斗場景為例,如圖4所示,場景系統(tǒng)中包括了各種資源,例如:場景、樹木、麻袋、箱子等等,這些資源被打包在多個(gè)第二資源文件,這多個(gè)第二資源文件之間具有依賴關(guān)系,比如,該場景系統(tǒng)下的多個(gè)場景中均有樹木、麻袋和箱子,那么獲取的多個(gè)第二資源文件中可以包括多個(gè)打包有不同場景資源的第二資源文件以及打包有樹木資源的第二資源文件、打包有麻袋資源的第二資源文件和打包有箱子資源的第二資源文件各一個(gè),那么在加載的過程中,可以先加載樹木、箱子、麻袋的第二資源文件,再在需要進(jìn)入各個(gè)場景時(shí)分別加載對應(yīng)場景的第二資源文件。
可見,通過上述裝置,在游戲應(yīng)用的運(yùn)行過程中,對游戲中系統(tǒng)的切換進(jìn)行檢測,比如檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng),對于跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況,由于該ui系統(tǒng)所需的資源以及所需的資源所依賴的資源均構(gòu)建在了一個(gè)第一資源文件中,只需獲取這一個(gè)第一資源文件并加載其中的資源即可跳轉(zhuǎn)到該ui系統(tǒng),對于進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況,可以獲取該場景系統(tǒng)所需的具有依賴關(guān)系的多個(gè)第二資源文件,并根據(jù)依賴關(guān)系加載多個(gè)第二資源文件中的資源,可見,對于ui系統(tǒng)將需要的資源通過一個(gè)第一資源文件加載,可以減少讀取資源的次數(shù),從而提高了游戲運(yùn)行的流暢度,而對于場景系統(tǒng)則根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系加載資源,減少了場景系統(tǒng)下資源的冗余度,從而也減少了場景系統(tǒng)下資源對磁盤的占用,提高了游戲運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲運(yùn)行流暢度低的問題。
作為一種可選的方案,第一處理模塊用于:
1)通過一次io讀取來獲取一個(gè)第一資源文件。
可選地,在本實(shí)施例中,由于ui系統(tǒng)所需的資源均被打包在一個(gè)第一資源文件中,那么,在獲取這個(gè)第一資源文件時(shí)可以通過一次io讀取來得到該第一資源文件。當(dāng)玩家在操作ui界面的時(shí)候,玩家會要求界面的流暢度,不會有卡頓的感覺,包括界面的滑進(jìn)滑出等動(dòng)畫效果也需要流暢。通過上述步驟,可以大大減少在加載ui系統(tǒng)時(shí)的io讀取次數(shù),從而減少加載資源時(shí)的io消耗,提高了游戲運(yùn)行的流暢度。
作為一種可選的方案,第二處理模塊用于:
1)在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件進(jìn)行加載。
可選地,在本實(shí)施例中,由于ui系統(tǒng)所需的資源均被打包在一個(gè)第一資源文件中,那么,在獲取這個(gè)第一資源文件時(shí)可以通過一次io讀取來得到該第一資源文件。當(dāng)玩家在操作ui界面的時(shí)候,玩家會要求界面的流暢度,不會有卡頓的感覺,包括界面的滑進(jìn)滑出等動(dòng)畫效果也需要流暢。通過上述步驟,可以大大減少在加載ui系統(tǒng)時(shí)的io讀取次數(shù),從而減少加載資源時(shí)的io消耗,提高了游戲運(yùn)行的流暢度。
作為一種可選的方案,上述裝置還包括:
1)第二檢測模塊,用于在游戲應(yīng)用運(yùn)行的過程中,檢測是否需要加載通用資源,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);
2)獲取模塊,用于在檢測到需要加載通用資源時(shí),獲取根據(jù)通用資源和通用資源所依賴的資源生成的多個(gè)第三資源文件;
3)加載模塊,用于加載多個(gè)第三資源文件中的資源。
可選地,在本實(shí)施例中,上述通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng)。例如:音效資源、裝備資源等等。
作為一種可選的方案,加載模塊包括:
1)第一加載單元,用于對多個(gè)第三資源文件中的第一部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;
2)第二加載單元,用于按照通用資源與通用資源所依賴的資源之間的依賴關(guān)系,對多個(gè)第三資源文件中的第二部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
例如:在檢測到需要加載通用資源a時(shí),獲取根據(jù)該通用資源a和通用資源a所依賴的資源b、c、d生成的兩個(gè)第三資源文件e和第三資源文件f,其中,第三資源文件e中打包了資源a、c、d,第三資源文件f中打包了資源b,由于通用資源a依賴于資源b,那么在加載時(shí),先加載第三資源文件f,再加載第三資源文件e來實(shí)現(xiàn)對通用資源a的加載。
可見,通過上述步驟,在游戲應(yīng)用運(yùn)行的過程中,檢測是否需要加載被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng)的通用資源,在需要加載通用資源時(shí)再對通用資源進(jìn)行加載,可以避免在游戲應(yīng)用運(yùn)行的過程中加載過多的冗余的資源,在需要用到通用資源時(shí),再根據(jù)依賴關(guān)系對通用資源進(jìn)行加載,從而減少了資源加載時(shí)的冗余度和下載量,提高了游戲運(yùn)行的流暢度。
實(shí)施例4
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述資源文件的生成方法的資源文件的生成裝置,如圖11所示,該裝置包括:
1)第三檢測模塊1102,用于檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件;
2)第一生成模塊1104,耦合至第三檢測模塊1102,用于在檢測出需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成ui系統(tǒng)所需的一個(gè)第一資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;
3)第二生成模塊1106,耦合至第三檢測模塊1102,用于在檢測出需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成場景系統(tǒng)所需的多個(gè)第二資源文件,其中,多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
可選地,在本實(shí)施例中,上述資源文件的生成裝置可以但不限于應(yīng)用于生成游戲資源文件的場景中。
可選地,在本實(shí)施例中,上述ui系統(tǒng)可以但不限于包括游戲中的菜單界面、狀態(tài)界面、技能界面、商城界面、游戲模式選擇界面、關(guān)卡選擇界面等等。
例如:以關(guān)卡選擇界面為例,如圖3所示,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源包括各個(gè)關(guān)卡的選項(xiàng)卡,游戲模式選項(xiàng)“自動(dòng)”和“戰(zhàn)斗”等等,該對戰(zhàn)模式的選擇界面的ui系統(tǒng)所需的資源所依賴的資源包括各個(gè)關(guān)卡的選項(xiàng)卡中的貼圖、文字描述、關(guān)卡難易程度的標(biāo)簽(例如:關(guān)卡2對應(yīng)標(biāo)簽“困難”)等等,這些資源都被打包在第一資源文件中,也就是說,加載了第一資源文件就相當(dāng)于加載了跳轉(zhuǎn)到該ui系統(tǒng)所需的全部資源。
可選地,在本實(shí)施例中,上述場景系統(tǒng)可以但不限于包括射擊游戲中的戰(zhàn)斗場景、對戰(zhàn)游戲中的對戰(zhàn)場景、競速類游戲中的競技場景、體育類游戲中的比賽場景等等。
例如:以射擊游戲中的戰(zhàn)斗場景為例,如圖4所示,場景系統(tǒng)中包括了各種資源,例如:場景、樹木、麻袋、箱子等等,這些資源被打包在多個(gè)第二資源文件,這多個(gè)第二資源文件之間具有依賴關(guān)系,比如,該場景系統(tǒng)下的多個(gè)場景中均有樹木、麻袋和箱子,那么獲取的多個(gè)第二資源文件中可以包括多個(gè)打包有不同場景資源的第二資源文件以及打包有樹木資源的第二資源文件、打包有麻袋資源的第二資源文件和打包有箱子資源的第二資源文件各一個(gè),那么在加載的過程中,可以先加載樹木、箱子、麻袋的第二資源文件,再在需要進(jìn)入各個(gè)場景時(shí)分別加載對應(yīng)場景的第二資源文件。
可見,通過上述裝置,根據(jù)游戲應(yīng)用運(yùn)行中的系統(tǒng)類型生成資源文件,對于ui系統(tǒng),將ui系統(tǒng)所需的資源以及所需的資源所依賴的資源打包到一個(gè)第一資源文件中,從而生成一個(gè)第一資源文件,在加載ui系統(tǒng)時(shí),只需加載這一個(gè)第一資源文件即可,減少了加載資源時(shí)的io讀取次數(shù),減少了io消耗,從而提高了游戲應(yīng)用運(yùn)行的流暢度,對于場景系統(tǒng),根據(jù)資源之間的依賴關(guān)系生成多個(gè)第二資源文件,從而減少了資源的冗余度以及資源的下載量,減少了游戲應(yīng)用運(yùn)行時(shí)資源加載對內(nèi)存的消耗,從而提高了現(xiàn)有技術(shù)中游戲應(yīng)用運(yùn)行的流暢度,進(jìn)而克服現(xiàn)有技術(shù)中游戲應(yīng)用運(yùn)行的流暢度低的問題。
作為一種可選的方案,第一生成模塊包括:
1)第一獲取單元,用于獲取ui系統(tǒng)所需的資源以及所需的資源所依賴的資源;
2)第一構(gòu)建單元,用于將所述ui系統(tǒng)所需的資源以及所述所需的資源所依賴的資源構(gòu)建在一個(gè)第一資源文件中,得到所述一個(gè)第一資源文件。
可選地,在本實(shí)施例中,對于游戲應(yīng)用的ui系統(tǒng),區(qū)分每個(gè)系統(tǒng)自己用到的資源。例如貼圖,除了一張公用的貼圖集,每個(gè)系統(tǒng)需管理自身的圖集。這樣能杜絕某張圖集被多個(gè)系統(tǒng)同時(shí)依賴,整體構(gòu)建導(dǎo)致冗余,分開構(gòu)建又會增加文件個(gè)數(shù)導(dǎo)致加載時(shí)io增加。所以針對游戲應(yīng)用的ui系統(tǒng),每個(gè)系統(tǒng)獨(dú)享自己的資源,將ui系統(tǒng)和其所依賴的資源整合打包在一個(gè)產(chǎn)出文件(即第一資源文件)里。
例如:如圖8所示,在生成ui系統(tǒng)a的資源文件時(shí),獲取到ui系統(tǒng)所需的資源objecta以及該所需的資源objecta所依賴的資源objectb和貼圖資源,將獲取到的objecta、objectb和貼圖資源構(gòu)建在一個(gè)產(chǎn)出文件中,生成第一資源文件a.unity3d。
通過上述裝置,游戲運(yùn)行時(shí),跳轉(zhuǎn)到某個(gè)ui系統(tǒng)時(shí)只需要加載這個(gè)整體的第一資源文件,只進(jìn)行一次io讀取即可。既大大降低io次數(shù),也大大減少因?yàn)槊總€(gè)文件太小導(dǎo)致的每次io讀取浪費(fèi)太多,從而提高了游戲運(yùn)行的流暢度。
作為一種可選的方案,第二生成模塊包括:
1)第二獲取單元,用于獲取場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源;
2)第二構(gòu)建單元,用于根據(jù)場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系為場景系統(tǒng)構(gòu)建多個(gè)第二資源文件。
可選地,在本實(shí)施例中,第二構(gòu)建單元用于:分別將場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源構(gòu)建在資源文件中,得到多個(gè)第二資源文件,其中,每個(gè)場景系統(tǒng)資源構(gòu)建在一個(gè)第二資源文件中,場景系統(tǒng)資源所依賴的每個(gè)資源構(gòu)建在一個(gè)第二資源文件中;根據(jù)場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系記錄多個(gè)第二資源文件之間的依賴關(guān)系。
可選地,在本實(shí)施例中,對于游戲應(yīng)用內(nèi)的場景系統(tǒng)的資源(例如:戰(zhàn)斗資源)可以采取的方式是盡可能獨(dú)立構(gòu)建資源文件。在進(jìn)入游戲戰(zhàn)斗場景之前,都會進(jìn)行一段時(shí)間的加載和預(yù)加載。會有如圖5所示的一個(gè)專門的界面顯示加載中,在這個(gè)時(shí)間點(diǎn),多一些少一些時(shí)間,只要不太過分甚至卡死不動(dòng),對于玩家來說都是可以接受的。當(dāng)采用盡可能獨(dú)立構(gòu)建資源的時(shí)候,會產(chǎn)生很多的零散資源文件,加載的時(shí)候,確實(shí)會需要更多的cpu和內(nèi)存占用,但玩家?guī)缀醪煊X不出來。
例如:如圖9所示,在生成戰(zhàn)斗系統(tǒng)a的資源文件時(shí),獲取到戰(zhàn)斗系統(tǒng)a所需的資源objecta以及該所需的資源objecta所依賴的資源objectb和貼圖資源,分別將獲取到的objecta、objectb和貼圖資源構(gòu)建在三個(gè)產(chǎn)出文件中,生成多個(gè)第二資源文件a.unity3d、b.unity3d和atlas.unity3d。
可見,通過上述裝置,大大減少了場景系統(tǒng)資源的冗余度,也就是大大減少資源的磁盤占用。這同時(shí)也會降低玩家的資源下載量,而且量級上十分顯著,對于游戲整體評價(jià)和數(shù)據(jù)也會有積極的提升。
作為一種可選的方案,上述裝置還包括:
1)第四檢測模塊,在檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件時(shí),檢測是否需要根據(jù)通用資源生成資源文件,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);
2)第三生成模塊,用于在檢測到需要根據(jù)通用資源生成資源文件時(shí),根據(jù)通用資源和通用資源所依賴的資源生成多個(gè)第三資源文件。
可選地,在本實(shí)施例中,第三生成模塊包括:
1)第一生成單元,用于生成多個(gè)第三資源文件中的第一部分資源文件,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;
2)第二生成單元,用于生成多個(gè)第三資源文件中的第二部分資源文件,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
可選地,在本實(shí)施例中,第一生成單元用于:獲取通用資源所依賴的資源以及通用資源所依賴的資源中每個(gè)資源的特征值,其中,資源的特征值根據(jù)資源的資源大小與資源被依賴的次數(shù)得到;將通用資源所依賴的資源中特征值大于預(yù)定閾值的資源分別構(gòu)建在一個(gè)資源文件中,得到第一部分資源文件。
可選地,在本實(shí)施例中,第二生成單元用于:將每個(gè)通用資源與每個(gè)通用資源所依賴的資源中特征值小于或等于預(yù)定閾值的資源構(gòu)建在一個(gè)資源文件,得到第二部分資源文件。
可選地,在本實(shí)施例中,可以記錄第一部分資源文件和第二部分資源文件之間的依賴關(guān)系,將生成的具有依賴關(guān)系的第一部分資源文件和第二部分資源文件作為多個(gè)第三資源文件。
例如:需要構(gòu)建的通用資源為通用資源a、通用資源b和通用資源c,通用資源a依賴的資源有資源d、資源e、資源f,通用資源b依賴的資源有資源e、資源f和資源g,通用資源c依賴的資源有資源e和資源f,那么,通過計(jì)算得到資源d、資源e、資源f、資源g的特征值分別為1、3、3、1,為通用資源所依賴的資源中特征值大于2的資源分別構(gòu)建資源文件,得到第一部分資源文件e.unity3d、f.unity3d。為通用資源與通用資源所依賴的資源中特征值不大于2的資源構(gòu)建資源文件,得到第二部分資源文件a.unity3d、b.unity3d和c.unity3d,其中,a.unity3d中包括通用資源a和資源d,b.unity3d中包括通用資源b和資源g,c.unity3d中包括通用資源c。記錄生成的資源文件中的依賴關(guān)系:a.unity3d、b.unity3d和c.unity3d均依賴于e.unity3d、f.unity3d,從而得到多個(gè)第三資源文件。
實(shí)施例5
本發(fā)明實(shí)施例的應(yīng)用環(huán)境可以但不限于參照實(shí)施例1中的應(yīng)用環(huán)境,本實(shí)施例中對此不再贅述。本發(fā)明實(shí)施例提供了用于實(shí)施上述資源加載方法的一種可選的具體應(yīng)用示例。
作為一種可選的實(shí)施例,上述資源加載方法可以但不限于應(yīng)用于對游戲應(yīng)用客戶端的資源進(jìn)行加載的場景中。在游戲應(yīng)用客戶端(client)運(yùn)行過程中,游戲的資源存放分兩種:一種是包內(nèi)資源,存放于游戲安裝包內(nèi)(如apk、ipa內(nèi));另外一種是包外資源,存放在程序空間外的磁盤上。包外資源一般適用于游戲資源的增量更新,以及因?yàn)槟撤N需求(例如:不希望游戲安裝包太大),需要將資源提出包外。包外資源的獲取方式一般是在進(jìn)入游戲之前,進(jìn)行下載,或者是根據(jù)游戲進(jìn)程,在需要使用的時(shí)候?qū)崟r(shí)進(jìn)行下載。
下載資源后,客戶端需要對下載的資源進(jìn)行加載,加載資源時(shí)將會占用內(nèi)存空間或者消耗io資源。玩家玩游戲的時(shí)候,最注重的肯定是游戲的可玩性和流暢性。像fps類游戲,玩家對于手感的要求非常高,一絲的卡頓,很容易就會影響到高端玩家的體驗(yàn)和精準(zhǔn)。根據(jù)游戲的模式,流暢性也分為兩大類:ui系統(tǒng)與游戲戰(zhàn)斗操作系統(tǒng)(相當(dāng)于上述場景系統(tǒng))。
當(dāng)玩家在操作ui系統(tǒng)的時(shí)候,玩家會要求界面的流暢度,不會有卡頓的感覺,包括界面的滑進(jìn)滑出等動(dòng)畫效果也需要流暢。在跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)時(shí),可以獲取ui系統(tǒng)所需的一個(gè)第一資源文件,并加載第一資源文件中的資源。對于ui系統(tǒng)將需要的資源通過一個(gè)第一資源文件加載,可以減少讀取資源的次數(shù),從而提高了游戲運(yùn)行的流暢度,在資源大小、加載、卸載等方面對游戲ui系統(tǒng)操作進(jìn)行優(yōu)化。
對于游戲戰(zhàn)斗操作系統(tǒng)中的資源加載,玩家在進(jìn)入游戲戰(zhàn)斗操作系統(tǒng)前可以進(jìn)行一小段時(shí)間的資源預(yù)加載,這個(gè)時(shí)間對于玩家來說是有預(yù)期的,只要不是時(shí)間非常長,對于玩家來說,都不會是影響體驗(yàn)的問題。可以獲取游戲戰(zhàn)斗操作系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載,減少了場景系統(tǒng)下資源的冗余度,從而也減少了場景系統(tǒng)下資源對磁盤的占用,提高了游戲運(yùn)行的流暢度。
而當(dāng)玩家在游戲內(nèi)進(jìn)行戰(zhàn)斗的時(shí)候,是游戲最核心的玩法,必須得保證游戲流暢,因?yàn)榭赡苌晕⒌目D也會影響游戲結(jié)果,玩家對于戰(zhàn)斗中的卡頓也會非常地介意。對于戰(zhàn)斗中需要的通用資源的加載,可以在檢測到需要加載通用資源時(shí),獲取根據(jù)通用資源和通用資源所依賴的資源生成的多個(gè)第三資源文件,并對多個(gè)第三資源文件中的第一部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源,再按照通用資源與通用資源所依賴的資源之間的依賴關(guān)系,對多個(gè)第三資源文件中的第二部分資源文件中的資源進(jìn)行加載,可以保證在這個(gè)環(huán)節(jié)中,從資源大小、預(yù)加載、加載、復(fù)用、卸載等方面對游戲內(nèi)戰(zhàn)斗操作進(jìn)行優(yōu)化。
實(shí)施例6
本發(fā)明實(shí)施例的應(yīng)用環(huán)境可以但不限于參照實(shí)施例2中的應(yīng)用環(huán)境,本實(shí)施例中對此不再贅述。本發(fā)明實(shí)施例提供了用于實(shí)施上述資源文件的生成方法的一種可選的具體應(yīng)用示例。
作為一種可選的實(shí)施例,上述資源文件的生成方法可以但不限于應(yīng)用于對游戲應(yīng)用客戶端的資源文件進(jìn)行生成的場景中。在生成資源文件時(shí),可以根據(jù)游戲應(yīng)用中各個(gè)系統(tǒng)的特點(diǎn),分別生成資源文件,將在需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成ui系統(tǒng)所需的一個(gè)第一資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源,并在需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成場景系統(tǒng)所需的多個(gè)第二資源文件,其中,多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。對于通用資源,可以根據(jù)通用資源和通用資源所依賴的資源生成多個(gè)第三資源文件。
通過上述方式生成資源文件,在資源下載時(shí),可以盡可能地減少資源大小,就能減少玩家下載資源時(shí)等待的時(shí)間,這對于下載成功率和玩家留存都是有非常重大的意義。
實(shí)施例7
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述資源加載方法的資源加載設(shè)備,如圖12所示,該設(shè)備包括:
1)通訊接口1202,設(shè)置為獲取ui系統(tǒng)所需的一個(gè)第一資源文件以及獲取場景系統(tǒng)所需的多個(gè)第二資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及所需的資源所依賴的資源,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源;
2)處理器1204,與通訊接口1202連接,設(shè)置為在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);在檢測到跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況下,加載第一資源文件中的資源;在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載。
3)存儲器1206,與通訊接口1202及處理器1204連接,設(shè)置為存儲第一資源文件和第二資源文件。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例3中所描述的示例,本實(shí)施例在此不再贅述。
實(shí)施例8
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述資源加載方法的資源加載設(shè)備,如圖13所示,該設(shè)備包括:
1)處理器1302,設(shè)置為檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件;在檢測出需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成ui系統(tǒng)所需的一個(gè)第一資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;在檢測出需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成場景系統(tǒng)所需的多個(gè)第二資源文件,其中,多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
3)存儲器1304,與處理器1302連接,設(shè)置為存儲第一資源文件和第二資源文件。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例2和實(shí)施例4中所描述的示例,本實(shí)施例在此不再贅述。
實(shí)施例9
本發(fā)明的實(shí)施例還提供了一種存儲介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲介質(zhì)可以位于網(wǎng)絡(luò)中的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備。
可選地,在本實(shí)施例中,存儲介質(zhì)被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,在游戲應(yīng)用運(yùn)行的過程中,檢測是否跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng),或,是否進(jìn)入游戲應(yīng)用中的場景系統(tǒng);
s2,在檢測到跳轉(zhuǎn)到游戲應(yīng)用中的ui系統(tǒng)的情況下,獲取ui系統(tǒng)所需的一個(gè)第一資源文件,并加載第一資源文件中的資源,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;
s3,在檢測到進(jìn)入游戲應(yīng)用中的場景系統(tǒng)的情況下,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件中的資源進(jìn)行加載,其中,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:通過一次io讀取來獲取一個(gè)第一資源文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在進(jìn)入游戲應(yīng)用中的場景系統(tǒng)之前,獲取場景系統(tǒng)所需的多個(gè)第二資源文件,并根據(jù)多個(gè)第二資源文件之間的依賴關(guān)系對多個(gè)第二資源文件進(jìn)行加載。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:檢測是否需要加載通用資源,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);在檢測到需要加載通用資源時(shí),獲取根據(jù)通用資源和通用資源所依賴的資源生成的多個(gè)第三資源文件;加載多個(gè)第三資源文件中的資源。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:對多個(gè)第三資源文件中的第一部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;按照通用資源與通用資源所依賴的資源之間的依賴關(guān)系,對多個(gè)第三資源文件中的第二部分資源文件中的資源進(jìn)行加載,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s4,檢測是否需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件,或者,是否需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件;
s5,在檢測出需要為游戲應(yīng)用中的ui系統(tǒng)生成資源文件的情況下,生成ui系統(tǒng)所需的一個(gè)第一資源文件,其中,第一資源文件中包括ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;
s6,在檢測出需要為游戲應(yīng)用中的場景系統(tǒng)生成資源文件的情況下,生成場景系統(tǒng)所需的多個(gè)第二資源文件,其中,多個(gè)第二資源文件之間在加載時(shí)存在依賴關(guān)系,每個(gè)第二資源文件包括一個(gè)或多個(gè)資源。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:獲取ui系統(tǒng)所需的資源以及ui系統(tǒng)所需的資源所依賴的資源;將ui系統(tǒng)所需的資源以及所需的資源所依賴的資源構(gòu)建在一個(gè)第一資源文件中,得到一個(gè)第一資源文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:獲取場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源;根據(jù)場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系為場景系統(tǒng)構(gòu)建多個(gè)第二資源文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:分別將場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源構(gòu)建在資源文件中,得到多個(gè)第二資源文件,其中,每個(gè)場景系統(tǒng)資源構(gòu)建在一個(gè)第二資源文件中,場景系統(tǒng)資源所依賴的每個(gè)資源構(gòu)建在一個(gè)第二資源文件中;根據(jù)場景系統(tǒng)資源以及場景系統(tǒng)資源所依賴的資源之間的依賴關(guān)系記錄多個(gè)第二資源文件之間的依賴關(guān)系。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:檢測是否需要根據(jù)通用資源生成資源文件,其中,通用資源被設(shè)置為用于ui系統(tǒng)和場景系統(tǒng);在檢測到需要根據(jù)通用資源生成資源文件時(shí),根據(jù)通用資源和通用資源所依賴的資源生成多個(gè)第三資源文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:生成多個(gè)第三資源文件中的第一部分資源文件,其中,每個(gè)第一部分資源文件包括一個(gè)通用資源所依賴的資源;生成多個(gè)第三資源文件中的第二部分資源文件,其中,每個(gè)第二部分資源文件包括一個(gè)通用資源,通用資源之間沒有依賴關(guān)系,第二部分資源文件中包括的通用資源依賴于第一部分資源文件中的資源。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:獲取通用資源所依賴的資源以及通用資源所依賴的資源中每個(gè)資源的特征值,其中,資源的特征值根據(jù)資源的資源大小與資源被依賴的次數(shù)得到;將通用資源所依賴的資源中特征值大于預(yù)定閾值的資源分別構(gòu)建在一個(gè)資源文件中,得到第一部分資源文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:將每個(gè)通用資源與每個(gè)通用資源所依賴的資源中特征值小于或等于預(yù)定閾值的資源構(gòu)建在一個(gè)資源文件,得到第二部分資源文件。
可選地,在本實(shí)施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在上述計(jì)算機(jī)可讀取的存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在存儲介質(zhì)中,包括若干指令用以使得一臺或多臺計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。
在本發(fā)明的上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的客戶端,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。