亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種對象資源處理方法、裝置及系統(tǒng)與流程

文檔序號(hào):12063471閱讀:280來源:國知局
一種對象資源處理方法、裝置及系統(tǒng)與流程

本申請涉及資源處理處理技術(shù)領(lǐng)域,更具體地說,涉及一種對象資源處理方法、裝置及系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)的發(fā)展,各種類型的應(yīng)用也如雨后春筍般出現(xiàn),為用戶提供了多樣化的網(wǎng)絡(luò)業(yè)務(wù),如視頻業(yè)務(wù)、游戲業(yè)務(wù)、網(wǎng)絡(luò)直播業(yè)務(wù)等等,極大的豐富了用戶的生活。

應(yīng)用業(yè)務(wù)場景中,每產(chǎn)生一個(gè)新的場景對象都會(huì)調(diào)用各分類資源,以游戲業(yè)務(wù)為例,游戲場景中的角色的創(chuàng)建會(huì)調(diào)用動(dòng)畫控制器資源、模型網(wǎng)絡(luò)資源、材質(zhì)資源、紋理資源等。各分類資源可以同時(shí)被多個(gè)場景對象所調(diào)用,因此,在創(chuàng)建一個(gè)場景對象時(shí),如果該場景對象所調(diào)用的分類資源已經(jīng)加載入內(nèi)存,則可以直接使用,否則,需要將對應(yīng)的分類資源載入內(nèi)存中。而在確定某一場景對象需要被刪除時(shí),為了避免該場景對象所調(diào)用的分類資源同時(shí)被其它場景對象所調(diào)用,現(xiàn)有技術(shù)僅僅將場景對象本身刪除,并未刪除場景對象所調(diào)用的分類資源。進(jìn)而伴隨著場景對象的產(chǎn)生,載入內(nèi)存中的分類資源也越來越多,導(dǎo)致應(yīng)用占用內(nèi)存過高。

因此,現(xiàn)有技術(shù)亟需一種資源管理方案,以解決現(xiàn)有技術(shù)伴隨場景對象的產(chǎn)生,內(nèi)存占用過高的問題。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本申請?zhí)峁┝艘环N對象資源處理方法、裝置及系統(tǒng),以解決現(xiàn)有技術(shù)隨場景對象的產(chǎn)生,應(yīng)用內(nèi)存占用過高的問題。

為了實(shí)現(xiàn)上述目的,現(xiàn)提出的方案如下:

一種對象資源處理方法,包括:

在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;

根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新;

根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;

將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

另一種對象資源處理方法,包括:

在確定需要?jiǎng)?chuàng)建目標(biāo)類型的場景對象時(shí),創(chuàng)建該目標(biāo)類型的場景對象;

確定所述場景對象所引用的各目標(biāo)分類資源;

根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新;所述目標(biāo)分類資源的引用量表示引用該目標(biāo)分類資源的場景對象的數(shù)量。

一種對象資源處理裝置,包括:

對象刪除單元,用于在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;

刪除更新單元,用于根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新;

分類資源確定單元,用于根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;

分類資源刪除單元,用于將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

另一種對象資源處理裝置,包括:

對象創(chuàng)建單元,用于在確定需要?jiǎng)?chuàng)建目標(biāo)類型的場景對象時(shí),創(chuàng)建該目標(biāo)類型的場景對象;

引用分類資源確定單元,用于確定所述場景對象所引用的各目標(biāo)分類資源;

創(chuàng)建更新單元,用于根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新;所述目標(biāo)分類資源的引用量表示引用該目標(biāo)分類資源的場景對象的數(shù)量。

一種對象資源處理系統(tǒng),其特征在于,包括上述示例的兩種對象資源處理裝置。

本申請實(shí)施例提供的對象資源處理方法,在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新;根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。由此可見,本申請?jiān)趧h除場景對象時(shí),進(jìn)一步分析其所引用的目標(biāo)分類資源,在刪除場景對象后對目標(biāo)分類資源的引用量進(jìn)行更新,根據(jù)更新后的目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源,進(jìn)而將該目標(biāo)分類資源從內(nèi)存中刪除,在保證了已創(chuàng)建的各場景對象正常運(yùn)行的情況下,大大降低了內(nèi)存的占用。

附圖說明

為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。

圖1為本申請實(shí)施例公開的一種對象資源處理方法流程圖;

圖2為本申請示例的一種角色對象引用分類資源的示意圖;

圖3為本申請實(shí)施例公開的另一種對象資源處理方法流程圖;

圖4為本申請實(shí)施例公開的又一種對象資源處理方法流程圖;

圖5為本申請實(shí)施例公開的又一種對象資源處理方法流程圖;

圖6為本申請實(shí)施例公開的一種對象資源處理裝置結(jié)構(gòu)示意圖;

圖7為本申請實(shí)施例公開的另一種對象資源處理裝置結(jié)構(gòu)示意圖;

圖8為本申請實(shí)施例公開的一種終端設(shè)備硬件結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。

本申請實(shí)施例公開了一種對象資源處理方案,應(yīng)用于終端設(shè)備,終端設(shè)備。終端設(shè)備可以是手機(jī)、IPAD、電腦等可以運(yùn)行應(yīng)用客戶端的設(shè)備。應(yīng)用客戶端所運(yùn)行的業(yè)務(wù)場景中存在場景對象的創(chuàng)建和刪除,本申請?jiān)趧h除場景對象時(shí),進(jìn)一步確定場景對象所引用的各目標(biāo)分類資源,各目標(biāo)分類資源對應(yīng)設(shè)置有引用量,引用量能夠在引用該目標(biāo)分類資源的場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新。進(jìn)而,在確定目標(biāo)分類資源的引用量表示該目標(biāo)分類資源未被任何場景對象引用時(shí),可以將該目標(biāo)分類資源從內(nèi)存中刪除,降低應(yīng)用內(nèi)存占用。

接下來的實(shí)施例中,對本申請的對象資源處理方法進(jìn)行詳細(xì)介紹,參見圖1所示,該方法包括:

步驟S100、在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;

這里首先對分類資源進(jìn)行介紹。

根據(jù)應(yīng)用的不同,應(yīng)用內(nèi)場景對象所引用的資源類型也不完全相同。本申請以一款游戲應(yīng)用內(nèi)角色所引用的資源進(jìn)行說明,參見圖2,其實(shí)例了一種角色對象的資源分解示意圖。從圖2可以看出,角色對象可以由Animator(動(dòng)畫組件)和SkinnedMeshRenderer(蒙皮網(wǎng)格渲染器)兩種Component(組件)構(gòu)成,兩種組件分別可以分解為多個(gè)分類資源。其中,Animator可以分解為AnimatorController(動(dòng)畫控制器),而AnimatorController又可以進(jìn)一步分解為AnimationClip(動(dòng)畫片段)和Avatar。SkinnedMeshRenderer可以分解為Mesh(模型網(wǎng)格)和Material(材質(zhì)),其中Material又可以進(jìn)一步分解為Texture(紋理)。

如圖2示例的,其中虛線框包含的即是角色對象所引用的各分類資源。包括:AnimatorController、AnimationClip、Avatar、Mesh、Material、Texture分類資源。

當(dāng)然,上述僅僅示例了一種角色對象的資源分解方式,針對其它場景對象也可以存在其它的資源分解方法。

本步驟中,在確定需要?jiǎng)h除緩存中已創(chuàng)建的場景對象時(shí),進(jìn)一步確定該場景對象所引用的各分類資源,作為目標(biāo)分類資源。

其中,確定需要?jiǎng)h除緩存中已創(chuàng)建的場景對象的過程,可以是應(yīng)用場景內(nèi)存在角色退出當(dāng)前場景界面時(shí),確定需要將與該角色對應(yīng)的場景對象進(jìn)行緩存。進(jìn)一步,判斷緩存隊(duì)列中是否已滿,如果是,則確定需要從緩存隊(duì)列中刪除一個(gè)場景對象,以將與角色對應(yīng)的場景對象存入緩存中。其中,緩存隊(duì)列中需要?jiǎng)h除的場景對象可以是按照先進(jìn)先出原則確定的最早一個(gè)存入緩存隊(duì)列的場景對象。

步驟S110、根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;

其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新。這里,引用該目標(biāo)分類資源的各場景對象可以包括本步驟中刪除的場景對象,也可以進(jìn)一步包括其它引用該目標(biāo)分類資源的各場景對象。

可以理解的是,若引用目標(biāo)分類資源的場景對象刪除,則對目標(biāo)分類資源的引用量的更新方式為減少引用量,如將引用量減1;若引用目標(biāo)分類資源的場景對象創(chuàng)建,則對目標(biāo)分類資源的引用量的更新方式為增加引用量,如將引用量加1。

目標(biāo)分類資源的初始引用量表示該目標(biāo)分類資源未被任何場景對象引用,初始引用量可以設(shè)置為0,或者其它數(shù)值。

步驟S120、根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;

具體地,若本次更新后的目標(biāo)分類資源的引用量表示未被任何場景對象引用,則該目標(biāo)分類資源可以被刪除。

其中,表示未被任何場景對象引用的引用量可以是初始引用量,即如果確定本次更新后的目標(biāo)分類資源的引用量為初始引用量,則可以將該目標(biāo)分類資源確定為刪除對象。

步驟S130、將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

在確定出未被任何場景對象引用的目標(biāo)分類資源之后,可以確定該目標(biāo)分類資源的刪除不會(huì)對現(xiàn)有的各場景對象的運(yùn)行產(chǎn)生影響,因此為了降低內(nèi)存占用,可以將該目標(biāo)分類資源從內(nèi)存中刪除,也即從內(nèi)存中卸載掉。

本申請實(shí)施例提供的對象資源處理方法,在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新;根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。由此可見,本申請?jiān)趧h除場景對象時(shí),進(jìn)一步分析其所引用的目標(biāo)分類資源,在刪除場景對象后對目標(biāo)分類資源的引用量進(jìn)行更新,根據(jù)更新后的目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源,進(jìn)而將該目標(biāo)分類資源從內(nèi)存中刪除,在保證了已創(chuàng)建的各場景對象正常運(yùn)行的情況下,大大降低了內(nèi)存的占用。

可選的,根據(jù)應(yīng)用開發(fā)引擎的不同,創(chuàng)建的場景對象也不同。接下來以unity3D引擎開發(fā)的應(yīng)用為例,對本申請方案進(jìn)行詳細(xì)介紹。

基于unity3D引擎所創(chuàng)建的場景對象包括對象實(shí)例以及預(yù)制件prefab,所述prefab用于在實(shí)例化后生成對象實(shí)例。

首先對prefab進(jìn)行簡要介紹:

在進(jìn)行一些功能開發(fā)的時(shí)候,開發(fā)人員常常將一些能夠復(fù)用的對象制作成預(yù)制件prefab。當(dāng)某一場景內(nèi)需要產(chǎn)生一對象實(shí)例時(shí),可以通過對prefab進(jìn)行實(shí)例化,得到對象實(shí)例。其中,一個(gè)prefab能夠?qū)嵗玫揭环N類型的對象實(shí)例,當(dāng)然,根據(jù)場景不同,可以對prefab實(shí)例化后得到的對象實(shí)例的屬性進(jìn)行調(diào)整。

對于prefab及對象實(shí)例,都會(huì)引用分類資源。

接下來參見圖3,圖3中以unity3D引擎開發(fā)的應(yīng)用為例,對本申請的對象資源處理方法進(jìn)行介紹,如圖3所示,該方法包括:

步驟S300、在刪除緩存中已創(chuàng)建的對象實(shí)例時(shí),確定所述對象實(shí)例所引用的各分類資源,作為第一目標(biāo)分類資源;

具體地,刪除對象實(shí)例的時(shí)機(jī)可以是,應(yīng)用場景中存在角色退出視野,需要將該角色對應(yīng)的對象實(shí)例添加如緩存,而此時(shí)緩存隊(duì)列已滿,則需要從緩存隊(duì)列中刪除一對象實(shí)例。

對象實(shí)例所引用的分類資源可以參照圖2示例的情況,將對象實(shí)例所引用的各分類資源作為第一目標(biāo)分類資源。

步驟S310、根據(jù)所述對象實(shí)例所引用的各第一目標(biāo)分類資源,在刪除所述對象實(shí)例后對各第一目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各第一目標(biāo)分類資源的引用量;

步驟S320、確定實(shí)例化生成所述對象實(shí)例的prefab是否需要?jiǎng)h除;若是,執(zhí)行步驟S330;

其中,所述prefab用于在其實(shí)例化后得到的各對象實(shí)例均刪除后進(jìn)行刪除。

一個(gè)prefab可以實(shí)例化得到多個(gè)對象實(shí)例,只有在prefab實(shí)例化得到的各對象實(shí)例均刪除后,該prefab才可以刪除。因此,本步驟中確定實(shí)例化生成所述對象實(shí)例的prefab是否需要?jiǎng)h除的過程,可以包括:

確定該prefab實(shí)例化生成的各對象實(shí)例是否均刪除完畢,如果是,則確定該prefab需要?jiǎng)h除。

步驟S330、刪除所述prefab,并確定所述prefab所引用的各分類資源,作為第二目標(biāo)分類資源;

具體地,在確定prefab需要?jiǎng)h除時(shí),將其從內(nèi)存中刪除。并確定該prefab所引用的各分類資源,作為第二目標(biāo)分類資源。

可以理解的是,第二目標(biāo)分類資源與第一目標(biāo)分類資源可以全部或部分相同,也可以完全不同。

步驟S340、根據(jù)prefab所引用的各第二目標(biāo)分類資源,在刪除所述prefab后對各第二目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各第二目標(biāo)分類資源的引用量;

本步驟中,在刪除prefab后,對其所引用的各第二目標(biāo)分類資源的引用量進(jìn)行更新,該更新方式為減小更新,如對各第二目標(biāo)分類資源的引用量減1。當(dāng)然,每次更新時(shí)增加和減少的數(shù)值需要相同,如均以1為單位。

步驟S350、根據(jù)本次更新后的各第二目標(biāo)分類資源的引用量,確定引用量表示未被任何對象實(shí)例及prefab引用的第二目標(biāo)分類資源;

具體地,分類資源的更新時(shí)機(jī)為引用該分類資源的對象實(shí)例創(chuàng)建和刪除時(shí),以及引用該分類資源的prefab創(chuàng)建和刪除時(shí)。由于prefab只有在其實(shí)例化得到的各對象實(shí)例全部刪除后才能夠刪除,因此本申請可以在刪除prefab,并對prefab所引用的各第二目標(biāo)分類資源的引用量進(jìn)行更新后,根據(jù)更新后各第二目標(biāo)分類資源的引用量,確定引用量表示未被任何對象實(shí)例及prefab引用的第二目標(biāo)分類資源。

步驟S360、調(diào)用unity3D引擎提供的刪除方法,將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

其中,unity3D引擎提供的刪除方法可以包括Resources.UnloadAsset()方法。

本申請的方法適用于MMORPG(Massive Multiplayer Online Role-PlayingGame,大型多人在線角色扮演游戲)應(yīng)用,同一屏幕中大量角色進(jìn)出視野,可以在不斷加載新資源的同時(shí),卸載掉不用的資源,降低了內(nèi)存消耗,且不會(huì)影響游戲的穩(wěn)定性。

仍參見圖2示例的角色對象的分類資源分解方式,各分類資源包括:AnimatorController、AnimationClip、Avatar、Mesh、Material、Texture分類資源。

其中,對于AnimatorController、Avatar、Mesh、Material,unity3D引擎均提供了直接獲取的接口,而unity3D引擎并未直接提供對AnimationClip和Texture的獲取接口。

基于此,本實(shí)施例中可以將AnimatorController轉(zhuǎn)換為AnimatorOverrideController,進(jìn)而可以利用unity3D引擎提供的對AnimatorOverrideController的獲取接口,通過該接口獲取AnimationClip。

進(jìn)一步,unity3D引擎并未提供遍歷獲取所有Texture的接口,只提供了通過紋理標(biāo)識(shí)獲取對應(yīng)Texture的接口。為此,本申請?jiān)O(shè)計(jì)了獲取對象實(shí)例在Texture分類資源中所引用的目標(biāo)Texture的方法,該方法可以包括:

S1、確定所述對象實(shí)例創(chuàng)建過程所使用的著色器Shader;

S2、獲取與所述Shader對應(yīng)的紋理名單,所述紋理名單包括對應(yīng)的Shader在創(chuàng)建所述對象實(shí)例時(shí)所使用的各紋理的標(biāo)識(shí);

具體地,本申請可以將Shader在創(chuàng)建對象實(shí)例時(shí)所使用的各紋理的標(biāo)識(shí)導(dǎo)出成xml文件。

S3、通過unity3D引擎所提供的紋理獲取接口,輸入所述紋理名單中各紋理的標(biāo)識(shí),以得到unity3D引擎返回的與各標(biāo)識(shí)對應(yīng)的目標(biāo)紋理Texture。

與上述各實(shí)施例對應(yīng)的,本申請實(shí)施例進(jìn)一步介紹了有一種對象資源處理方法,該方法介紹了創(chuàng)建場景對象的過程,該過程中包括對場景對象所引用的分類資源的引用量的更新過程,參見圖4所示,該方法包括:

步驟S400、在確定需要?jiǎng)?chuàng)建目標(biāo)類型的場景對象時(shí),創(chuàng)建該目標(biāo)類型的場景對象;

具體地,當(dāng)存在角色進(jìn)入當(dāng)前場景界面時(shí),可以確定需要?jiǎng)?chuàng)建與該角色對應(yīng)的目標(biāo)類型的場景對象。

步驟S410、確定所述場景對象所引用的各目標(biāo)分類資源;

具體地,在創(chuàng)建場景對象之后,確定該場景對象所引用的各目標(biāo)分類資源。其中,對象的分類資源的分解方式可以參照圖2示例的情況。

步驟S420、根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新。

其中,所述目標(biāo)分類資源的引用量表示引用該目標(biāo)分類資源的場景對象的數(shù)量。

可以理解的是,這里在創(chuàng)建場景對象后,對場景對應(yīng)所引用的各目標(biāo)分類資源的引用量的更新方式可以是,增加引用量數(shù)值,如對引用量加1。當(dāng)然,這里引用量每次增加數(shù)值需要與前述實(shí)施例中引用量每次減少數(shù)值相同,如設(shè)置引用目標(biāo)分類資源的場景對象創(chuàng)建時(shí),對該目標(biāo)分類資源的引用量加1,引用目標(biāo)分類資源的場景對象刪除時(shí),對該目標(biāo)分類資源的引用量減1。目標(biāo)分類資源初始引用量可以設(shè)置為0。

按照本申請實(shí)施例提供的對象資源處理方法,在創(chuàng)建場景對象時(shí),進(jìn)一步分析場景對象所引用的各目標(biāo)分類資源,并在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,同時(shí),目標(biāo)分類資源的引用量還用于在引用該目標(biāo)分類資源的場景對象刪除時(shí)進(jìn)行更新,便于在確定某一目標(biāo)分類資源的引用量表示未被任何場景對象引用時(shí),可以將該目標(biāo)分類資源從內(nèi)存中刪除,減少內(nèi)存占用。

接下來的實(shí)施例中,以unity3D引擎開發(fā)的應(yīng)用為例,對本申請方案進(jìn)行詳細(xì)介紹。

基于unity3D引擎所創(chuàng)建的場景對象包括對象實(shí)例以及預(yù)制件prefab,所述prefab用于在實(shí)例化后生成對象實(shí)例。

參見圖5,圖5中以unity3D引擎開發(fā)的應(yīng)用為例,對本申請的對象資源處理方法進(jìn)行介紹,如圖5所示,該方法包括:

步驟S500、在確定需要?jiǎng)?chuàng)建目標(biāo)類型的場景對象時(shí),確定緩存中是否存在與所述目標(biāo)類型對應(yīng)的prefab;若是,執(zhí)行步驟S510,若否,執(zhí)行步驟S540;

步驟S510、對所述與所述目標(biāo)類型對應(yīng)的prefab進(jìn)行實(shí)例化,得到第一對象實(shí)例;

步驟S520、確定該第一對象實(shí)例所引用的各第一目標(biāo)分類資源;

步驟S530、根據(jù)所述第一對象實(shí)例所引用的各第一目標(biāo)分類資源,對各所述第一目標(biāo)分類資源的引用量進(jìn)行更新;

具體地,在創(chuàng)建所述第一對象實(shí)例后對各所述第一目標(biāo)分類資源的引用量進(jìn)行更新。

步驟S540、從內(nèi)存中創(chuàng)建與所述目標(biāo)類型對應(yīng)的prefab,并對創(chuàng)建得到的prefab進(jìn)行實(shí)例化,得到第二對象實(shí)例;

步驟S550、確定該創(chuàng)建的prefab所引用的各第二目標(biāo)分類資源,以及該第二對象實(shí)例所引用的各第三目標(biāo)分類資源;

步驟S560、根據(jù)創(chuàng)建的所述prefab所引用的各第二目標(biāo)分類資源,在創(chuàng)建所述prefab后對各所述第二目標(biāo)分類資源的引用量進(jìn)行更新;

步驟S570、根據(jù)所述第二對象實(shí)例所引用的各第三目標(biāo)分類資源,在創(chuàng)建所述第二對象實(shí)例后對各所述第三目標(biāo)分類資源的引用量進(jìn)行更新。

其中,第一目標(biāo)分類資源、第二目標(biāo)分類資源和第三目標(biāo)分類資源僅僅是便于表述,并無本質(zhì)上的區(qū)別,三者可以完全或部分相同,也可以完全不相同。

根據(jù)上述實(shí)施例可以確定,分類資源的引用量以增加方式進(jìn)行更新的時(shí)機(jī)可以包括:

引用該分類資源的prefab創(chuàng)建時(shí)、引用該分類資源的對象實(shí)例創(chuàng)建時(shí)(該過程包括,以緩存的prefab進(jìn)行實(shí)例化創(chuàng)建對象實(shí)例,以及以新創(chuàng)建的prefab進(jìn)行實(shí)例化創(chuàng)建對象實(shí)例)。

綜上所述:

每當(dāng)一個(gè)prefab創(chuàng)建時(shí),需要對其引用的各目標(biāo)分類資源以增加方式進(jìn)行更新;每當(dāng)一個(gè)對象實(shí)例創(chuàng)建時(shí)需要對其引用的各目標(biāo)分類資源以增加方式進(jìn)行更新。其中,增加方式更新可以包括引用量加1。

每當(dāng)一個(gè)對象實(shí)例刪除時(shí),需要對其引用的各目標(biāo)分類資源的引用量以減少方式進(jìn)行式更新;每當(dāng)一個(gè)prefab刪除時(shí),需要對其引用的各目標(biāo)分類資源的引用量以減少方式進(jìn)行式更新。其中,減少方式更新可以包括引用量減1。

在prefab刪除時(shí),根據(jù)更新后所述prefab引用的各目標(biāo)分類資源的引用量,從中確定引用量表示未被任何prefab和對象實(shí)例引用的目標(biāo)分類資源,將其從內(nèi)存中刪除。

下面對本申請實(shí)施例提供的對象資源處理裝置進(jìn)行描述,下文描述的對象資源處理裝置與上文描述的對象資源處理方法可相互對應(yīng)參照。

本申請實(shí)施例公開了對象資源處理裝置的兩種不同結(jié)構(gòu),分別如圖6和圖7所示,分別介紹如下:

第一種結(jié)構(gòu),如圖6所示,對象資源處理裝置包括:

對象刪除單元11,用于在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;

刪除更新單元12,用于根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新;

分類資源確定單元13,用于根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;

分類資源刪除單元14,用于將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

可選的,所述場景對象可以是基于unity3D引擎所創(chuàng)建;所述場景對象包括對象實(shí)例以及預(yù)制件prefab,所述prefab用于在實(shí)例化后生成對象實(shí)例?;诖?,對象刪除單元確定所述場景對象所引用的各目標(biāo)分類資源的過程,具體可以包括:

在刪除緩存中已創(chuàng)建的對象實(shí)例時(shí),確定所述對象實(shí)例所引用的各分類資源,作為第一目標(biāo)分類資源;

確定刪除所述對象實(shí)例后,實(shí)例化生成所述對象實(shí)例的prefab是否需要?jiǎng)h除;其中,所述prefab用于在其實(shí)例化后得到的各對象實(shí)例均刪除后進(jìn)行刪除;

若是,刪除所述prefab,并確定所述prefab所引用的各分類資源,作為第二目標(biāo)分類資源。

可選的,刪除更新單元在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新的過程,具體可以包括:

根據(jù)所述對象實(shí)例所引用的各第一目標(biāo)分類資源,在刪除所述對象實(shí)例后對各第一目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各第一目標(biāo)分類資源的引用量;

根據(jù)prefab所引用的各第二目標(biāo)分類資源,在刪除所述prefab后對各第二目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各第二目標(biāo)分類資源的引用量。

可選的,分類資源確定單元根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源的過程,具體可以包括:

根據(jù)本次更新后的各第二目標(biāo)分類資源的引用量,確定引用量表示未被任何對象實(shí)例及prefab引用的第二目標(biāo)分類資源。

可選的,分類資源刪除單元將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除的過程,具體可以包括:

調(diào)用unity3D引擎提供的Resources.UnloadAsset()方法,將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

可選的,所述分類資源可以包括紋理Texture分類資源。則對象刪除單元確定對象實(shí)例在Texture分類資源中所引用的目標(biāo)Texture的過程,具體可以包括:

確定所述對象實(shí)例創(chuàng)建過程所使用的著色器Shader;

獲取與所述Shader對應(yīng)的紋理名單,所述紋理名單包括對應(yīng)的Shader在創(chuàng)建所述對象實(shí)例時(shí)所使用的各紋理的標(biāo)識(shí);

通過unity3D引擎所提供的紋理獲取接口,輸入所述紋理名單中各紋理的標(biāo)識(shí),以得到unity3D引擎返回的與各標(biāo)識(shí)對應(yīng)的目標(biāo)紋理Texture。

可選的,本申請的裝置還可以包括:

緩存確定單元,用于在確定應(yīng)用場景內(nèi)存在角色退出當(dāng)前場景界面時(shí),確定需要將與所述角色對應(yīng)的場景對象進(jìn)行緩存;

隊(duì)列狀態(tài)判斷單元,用于判斷緩存隊(duì)列是否已滿;若是,從所述緩存隊(duì)列中確定一場景對象進(jìn)行刪除,以將與所述角色對應(yīng)的場景對象存入緩存隊(duì)列中,并執(zhí)行所述對象刪除單元。

第二種結(jié)構(gòu),如圖7所示,對象資源處理裝置包括:

對象創(chuàng)建單元21,用于在確定需要?jiǎng)?chuàng)建目標(biāo)類型的場景對象時(shí),創(chuàng)建該目標(biāo)類型的場景對象;

引用分類資源確定單元22,用于確定所述場景對象所引用的各目標(biāo)分類資源;

創(chuàng)建更新單元23,用于根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新;所述目標(biāo)分類資源的引用量表示引用該目標(biāo)分類資源的場景對象的數(shù)量。

可選的,所述場景對象可以是基于unity3D引擎所創(chuàng)建;所述場景對象包括對象實(shí)例以及預(yù)制件prefab,所述prefab用于在實(shí)例化后生成對象實(shí)例?;诖?,對象創(chuàng)建單元?jiǎng)?chuàng)建該目標(biāo)類型的場景對象的過程,可以包括:

確定緩存中是否存在與所述目標(biāo)類型對應(yīng)的prefab;

若是,對所述與所述目標(biāo)類型對應(yīng)的prefab進(jìn)行實(shí)例化,得到第一對象實(shí)例;

若否,從內(nèi)存中創(chuàng)建與所述目標(biāo)類型對應(yīng)的prefab,并對創(chuàng)建得到的prefab進(jìn)行實(shí)例化,得到第二對象實(shí)例。

可選的,引用分類資源確定單元確定所述場景對象所引用的各目標(biāo)分類資源的過程,具體可以包括:

在通過緩存中的prefab實(shí)例化得到第一對象實(shí)例后,確定該第一對象實(shí)例所引用的各第一目標(biāo)分類資源;

在從內(nèi)存中創(chuàng)建與所述目標(biāo)類型對應(yīng)的prefab,并對其進(jìn)行實(shí)例化得到第二對象實(shí)例后,確定該創(chuàng)建的prefab所引用的各第二目標(biāo)分類資源,以及該第二對象實(shí)例所引用的各第三目標(biāo)分類資源。

可選的,創(chuàng)建更新單元根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新的過程,具體可以包括:

根據(jù)所述第一對象實(shí)例所引用的各第一目標(biāo)分類資源,在創(chuàng)建所述第一對象實(shí)例后對各所述第一目標(biāo)分類資源的引用量進(jìn)行更新;

根據(jù)創(chuàng)建的所述prefab所引用的各第二目標(biāo)分類資源,在創(chuàng)建所述prefab后對各所述第二目標(biāo)分類資源的引用量進(jìn)行更新;

根據(jù)所述第二對象實(shí)例所引用的各第三目標(biāo)分類資源,在創(chuàng)建所述第二對象實(shí)例后對各所述第三目標(biāo)分類資源的引用量進(jìn)行更新。

接下來的實(shí)施例中,對實(shí)現(xiàn)本申請的項(xiàng)目數(shù)據(jù)處理裝置的終端設(shè)備的硬件結(jié)構(gòu)進(jìn)行介紹,參見圖8,圖8為本申請實(shí)施例提供的一種終端設(shè)備硬件結(jié)構(gòu)示意圖。

如圖8所示,服務(wù)器可以包括:

處理器1,通信接口2,存儲(chǔ)器3,通信總線4,和顯示屏5;

其中處理器1、通信接口2、存儲(chǔ)器3和顯示屏5通過通信總線4完成相互間的通信;

可選的,通信接口2可以為通信模塊的接口,如GSM模塊的接口;

處理器1,用于執(zhí)行程序;

存儲(chǔ)器3,用于存放程序;

程序可以包括程序代碼,所述程序代碼包括處理器的操作指令。

處理器1可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實(shí)施本申請實(shí)施例的一個(gè)或多個(gè)集成電路。

存儲(chǔ)器3可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。

其中,程序具體用于:

在刪除緩存中已創(chuàng)建的場景對象時(shí),確定所述場景對象所引用的各目標(biāo)分類資源;

根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在刪除所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新,得到本次更新后的各目標(biāo)分類資源的引用量;其中,目標(biāo)分類資源的引用量在引用該目標(biāo)分類資源的各場景對象創(chuàng)建和刪除時(shí)進(jìn)行更新;

根據(jù)本次更新后的各目標(biāo)分類資源的引用量,確定引用量表示未被任何場景對象引用的目標(biāo)分類資源;

將確定的未被任何場景對象引用的目標(biāo)分類資源從內(nèi)存中刪除。

或者,

在確定需要?jiǎng)?chuàng)建目標(biāo)類型的場景對象時(shí),創(chuàng)建該目標(biāo)類型的場景對象;

確定所述場景對象所引用的各目標(biāo)分類資源;

根據(jù)所述場景對象所引用的各目標(biāo)分類資源,在創(chuàng)建所述場景對象后對所述各目標(biāo)分類資源的引用量進(jìn)行更新;所述目標(biāo)分類資源的引用量表示引用該目標(biāo)分類資源的場景對象的數(shù)量。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。

對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1