提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法
【專利摘要】本發(fā)明提供了一種提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,該方法通過(guò)將SmoothMoves動(dòng)畫文件掛載的腳本BoneAnimation中的觸發(fā)幀和動(dòng)畫剪輯數(shù)據(jù)抽離出去并存入一創(chuàng)建的腳本對(duì)象中,使得骨骼動(dòng)畫中觸發(fā)幀和動(dòng)畫剪輯兩者中不再包含任何數(shù)據(jù),即骨骼動(dòng)畫中存儲(chǔ)的數(shù)據(jù)量大幅減少。對(duì)于同一SmoothMoves動(dòng)畫文件,不必對(duì)大量重復(fù)的觸發(fā)幀和動(dòng)畫剪輯數(shù)據(jù)進(jìn)行反復(fù)的深度復(fù)制,只需引用各實(shí)例化所創(chuàng)建的腳本對(duì)象所共享的同一份數(shù)據(jù)即可,有效地減少了GC Alloc的次數(shù),同時(shí)也減少了內(nèi)存占用。
【專利說(shuō)明】提高Unity3d骨路動(dòng)畫插件SmoothMoves的加載速度的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種動(dòng)畫插件加載方法,特別涉及一種提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法。
【背景技術(shù)】
[0002]Unity3d是由來(lái)自美國(guó)的Unity Technologies公司開發(fā)的在全球占主導(dǎo)地位的一款游戲開發(fā)軟件。Unity是一種開創(chuàng)性的開發(fā)平臺(tái),用于創(chuàng)建游戲和交互式3D和2D體驗(yàn),能夠用于三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的設(shè)計(jì)。Unity編輯器運(yùn)行在 Windows 和 Mac OS X 下,并可發(fā)布游戲至 Windows、Mac、Wi1、iPhone、Windowsphone 8和Android眾多平臺(tái),也可以利用Unity web player插件發(fā)布網(wǎng)頁(yè)游戲,支持Mac和Windows的網(wǎng)頁(yè)瀏覽。正因如此,在智能設(shè)備迅猛發(fā)展的今天,Unity成功占據(jù)了移動(dòng)游戲開發(fā)引擎的半壁江山。在世界范圍內(nèi),Unity占據(jù)全功能游戲引擎市場(chǎng)45%的份額,大約三倍于其直接競(jìng)爭(zhēng)對(duì)手。
[0003]Unity的最初定位為3d游戲引擎,為3d制作整個(gè)流水線提供了全面的支持,同時(shí)Unity也支持第三方工具插件,并可以在其官方的Asset Store (資源商店)中發(fā)布和購(gòu)買,這也是其迅速發(fā)展的重要原因。Unity在游戲制作流程及跨平臺(tái)方面的良好表現(xiàn),使得眾多的2d游戲開發(fā)也選擇Unity,同時(shí)輔助使用一些第三方的2d插件,在這些工具插件中,SmoothMoves作為一款2d骨骼動(dòng)畫插件得到了較多關(guān)注。
[0004]SmoothMoves依托于Unity,提供了類似于flash操作方式的2d骨骼動(dòng)畫解決方案,大大減少2d游戲的資源占用。但是SmoothMoves動(dòng)畫文件加載時(shí)速度較慢,在加載一個(gè)含有50個(gè)bone,10個(gè)clip的動(dòng)畫文件時(shí),大概需要I秒,如此在加載一個(gè)有20個(gè)類似動(dòng)畫文件的場(chǎng)景時(shí)便需要20秒左右,即便是將同一個(gè)動(dòng)畫文件實(shí)例化20份也要耗費(fèi)同樣的時(shí)長(zhǎng),如此長(zhǎng)時(shí)間的加載將大大降低游戲者的使用體驗(yàn)。在通過(guò)Unity編輯器中的Profiler (性能分析工具)分析加載過(guò)程后,可以發(fā)現(xiàn)在動(dòng)畫文件加載過(guò)程中產(chǎn)生的大量的GC Alloc (會(huì)導(dǎo)致垃圾回收的內(nèi)存分配),每個(gè)類似前述的動(dòng)畫產(chǎn)生大約IMB的GCAlloc0正是如此大量的GC Alloc使得加載速度非常之慢。
[0005]現(xiàn)有的SmoothMoves動(dòng)畫運(yùn)行時(shí)需要依靠腳本BoneAnimat1n(骨骼動(dòng)畫)來(lái)控制,其包含的所有的動(dòng)畫信息,如關(guān)鍵幀、骨骼貼圖等等。在加載動(dòng)畫時(shí),需要對(duì)BoneAnimat1n進(jìn)行實(shí)例化,而在實(shí)例化SmoothMoves動(dòng)畫時(shí)會(huì)對(duì)這些動(dòng)畫信息進(jìn)行復(fù)制,即將在內(nèi)存中開放一個(gè)空間來(lái)存儲(chǔ)動(dòng)畫對(duì)象,因而復(fù)制動(dòng)畫文件時(shí)會(huì)觸發(fā)GC Alloc。而在實(shí)例化多個(gè)動(dòng)畫文件時(shí),將反復(fù)復(fù)制這些動(dòng)畫信息,如此反復(fù)觸發(fā)GC Alloc,將導(dǎo)致產(chǎn)生大量的垃圾內(nèi)存分配,占用了更多的內(nèi)存空間,拖慢動(dòng)畫加載速度。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,以解決現(xiàn)有的Unity3d骨骼動(dòng)畫插件SmoothMoves加載速度較慢的問(wèn)題。
[0007]本發(fā)明的第二目的在于提供一種提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,以解決骨骼動(dòng)畫實(shí)例化過(guò)程中復(fù)制的數(shù)據(jù)量較大的問(wèn)題。
[0008]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,包括:
51:從動(dòng)畫文件的骨骼動(dòng)畫中抽離出觸發(fā)幀和動(dòng)畫剪輯,并分別形成觸發(fā)幀列表和動(dòng)畫剪輯列表;
52:每次實(shí)例化一個(gè)骨骼動(dòng)畫時(shí),通過(guò)添加引用的方式對(duì)所述觸發(fā)幀列表和動(dòng)畫剪輯列表進(jìn)行單獨(dú)加載。
[0009]較佳地,所述步驟SI具體包括以下步驟:
511:創(chuàng)建骨骼動(dòng)畫的腳本對(duì)象;
512:在所述腳本對(duì)象中創(chuàng)建觸發(fā)幀列表及動(dòng)畫剪輯列表;
513:將原有的骨骼動(dòng)畫的觸發(fā)幀拷貝到所述觸發(fā)幀列表中,并清空原有骨骼動(dòng)畫的觸發(fā)幀;
S14:將原有的骨骼動(dòng)畫的動(dòng)畫剪輯拷貝到所述動(dòng)畫剪輯列表中,并清空原有骨骼動(dòng)畫的動(dòng)畫剪輯。
[0010]較佳地,所述步驟S13還包括對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行優(yōu)化,所述對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行優(yōu)化具體包括以下步驟:
5131:建立觸發(fā)幀骨骼集合,所述觸發(fā)幀骨骼集合包含屬性不同的若干觸發(fā)幀骨骼;
5132:建立骨骼動(dòng)畫觸發(fā)幀數(shù)組,所述骨骼動(dòng)畫觸發(fā)幀數(shù)組包括若干觸發(fā)幀,每個(gè)觸發(fā)幀包括若干觸發(fā)幀骨骼;
5133:對(duì)每個(gè)觸發(fā)幀均建立一對(duì)應(yīng)的索引表,該索引表中存儲(chǔ)其對(duì)應(yīng)的觸發(fā)幀中的所有觸發(fā)幀骨骼在所述觸發(fā)幀骨骼集合的索引,在對(duì)每個(gè)觸發(fā)幀建立對(duì)應(yīng)的索引表后,清除該觸發(fā)幀的全部觸發(fā)幀骨骼;
5134:將骨骼動(dòng)畫的各觸發(fā)幀的索引表拷貝到所述觸發(fā)幀列表中各觸發(fā)幀對(duì)應(yīng)位置處,并清空所述觸發(fā)幀列表中的觸發(fā)幀。
[0011 ] 較佳地,所述步驟S2具體包括:
521:預(yù)先加載包含所述觸發(fā)幀列表及動(dòng)畫剪輯列表的腳本對(duì)象;
522:實(shí)例化所述骨骼動(dòng)畫并為其觸發(fā)幀和動(dòng)畫剪輯添加引用。
[0012]較佳地,所述步驟S22具體包括:
將骨骼動(dòng)畫中的觸發(fā)幀指向腳本對(duì)象中的觸發(fā)幀列表;
將骨骼動(dòng)畫中的動(dòng)畫剪輯指向腳本對(duì)象中的動(dòng)畫剪輯列表。
[0013]較佳地,所述步驟Sll中的所述腳本對(duì)象為一待填充數(shù)據(jù)的空表。
[0014]本發(fā)明所提供的方法通過(guò)將SmoothMoves動(dòng)畫文件掛載的腳本BoneAnimat1n(骨骼動(dòng)畫)中的觸發(fā)幀和動(dòng)畫剪輯數(shù)據(jù)抽離出去并存入一腳本對(duì)象中,使得骨骼動(dòng)畫中觸發(fā)幀和動(dòng)畫剪輯兩者中不再包含任何數(shù)據(jù),即骨骼動(dòng)畫中存儲(chǔ)的數(shù)據(jù)量大幅減少。在動(dòng)畫實(shí)例化時(shí),在對(duì)骨骼動(dòng)畫進(jìn)行深度復(fù)制時(shí),即不必再調(diào)取骨骼動(dòng)畫中的觸發(fā)幀和動(dòng)畫剪輯數(shù)據(jù),而是通過(guò)引用腳本對(duì)象的方式實(shí)現(xiàn)對(duì)原來(lái)的觸發(fā)幀和動(dòng)畫剪輯數(shù)據(jù)的加載。進(jìn)一步地通過(guò)將原本存儲(chǔ)于觸發(fā)幀中的各個(gè)觸發(fā)幀骨骼數(shù)據(jù)存儲(chǔ)在一建立的屬性無(wú)重合的觸發(fā)幀骨骼集合中,而觸發(fā)幀中只存儲(chǔ)其原來(lái)所存儲(chǔ)的觸發(fā)幀骨骼的索引表,再將各觸發(fā)幀對(duì)應(yīng)的索引表存儲(chǔ)在腳本對(duì)象的觸發(fā)幀列表中,這種方式進(jìn)一步地減少了在骨骼動(dòng)畫進(jìn)行深度復(fù)制時(shí)對(duì)大量重復(fù)的數(shù)據(jù)的復(fù)制量。
[0015]采用本發(fā)明方法后,對(duì)于同一 SmoothMoves動(dòng)畫文件,不必對(duì)大量重復(fù)的觸發(fā)幀和動(dòng)畫剪輯數(shù)據(jù)進(jìn)行反復(fù)的深度復(fù)制,只需引用各實(shí)例化腳本對(duì)象所共享的同一份數(shù)據(jù)即可,有效地減少了 GC Alloc的次數(shù),同時(shí)也減少了內(nèi)存占用。
【專利附圖】
【附圖說(shuō)明】
[0016]圖1為本發(fā)明方法優(yōu)選實(shí)施例的整體步驟流程圖;
圖2為本發(fā)明方法優(yōu)選實(shí)施例的步驟SI的具體步驟流程圖;
圖3為本發(fā)明方法優(yōu)選實(shí)施例的步驟SI的具體執(zhí)行過(guò)程流程圖;
圖4為本發(fā)明方法優(yōu)選實(shí)施例的步驟S2的具體步驟流程圖;
圖5為本發(fā)明方法一實(shí)施例的優(yōu)化前及優(yōu)化后數(shù)據(jù)量對(duì)比示意圖;
圖6為優(yōu)選實(shí)施例的對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行優(yōu)化的具體步驟流程圖。
【具體實(shí)施方式】
[0017]為更好地說(shuō)明本發(fā)明,茲以若干優(yōu)選實(shí)施例,并配合附圖對(duì)本發(fā)明作詳細(xì)說(shuō)明,具體如下:
如圖1所示,本發(fā)明方法包括兩步,具體如下:
步驟S1:從動(dòng)畫文件的骨骼動(dòng)畫中抽離出觸發(fā)幀和動(dòng)畫剪輯,并分別形成觸發(fā)幀列表和動(dòng)畫剪輯列表;
步驟S2:每次實(shí)例化一個(gè)骨骼動(dòng)畫時(shí),先對(duì)所述觸發(fā)幀列表和動(dòng)畫剪輯列表進(jìn)行單獨(dú)加載,再為骨骼動(dòng)畫添加相應(yīng)引用。
[0018]其中,步驟SI具體包括4個(gè)步驟,如圖2所示,現(xiàn)結(jié)合圖3具體說(shuō)明步驟SI的執(zhí)行過(guò)程,具體如下:
對(duì)于一個(gè)SmoothMoves動(dòng)畫animat1nT,其骨豁動(dòng)畫的觸發(fā)巾貞(BoneAnimat1n.triggerFrames)的大小為200K字節(jié),骨豁動(dòng)畫的動(dòng)畫剪輯(BoneAnimat1n.mAnimat1nClips)大小為 10K 字節(jié)。
[0019]Sll:創(chuàng)建骨骼動(dòng)畫的腳本對(duì)象。
[0020]具體為,創(chuàng)建腳本對(duì)象(ScriptObject)實(shí)例,該腳本對(duì)象命名為SMAnimat1nData(如圖3所示),其中,SMAnimat1nData為一待填充數(shù)據(jù)的空表。
[0021]S12:在腳本對(duì)象中創(chuàng)建觸發(fā)幀列表及動(dòng)畫剪輯列表。
[0022]具體為,在SMAnimat1nData中添加觸發(fā)巾貞(TriggerFrame)數(shù)組的成員觸發(fā)巾貞列表(triggerFrames)。
[0023]同時(shí)在SMAnimat1nData中添加輕量化動(dòng)畫剪輯(Animat1nClipSM_Lite)數(shù)組的成員動(dòng)畫剪輯列表(mAnimat1nClips)。
[0024]S13:將原有的骨骼動(dòng)畫的觸發(fā)幀拷貝到所述觸發(fā)幀列表中,并清空原有的骨骼動(dòng)畫觸發(fā)幀。
[0025]將骨骼動(dòng)畫的觸發(fā)巾貞(BoneAnimat1n.triggerFrames)拷貝到腳本對(duì)象的觸發(fā)中貞列表(SMAnimat1nData.triggerFrames)中,并清空 BoneAnimat1n.triggerFrames。
[0026]S14:將原有的骨骼動(dòng)畫的動(dòng)畫剪輯拷貝到所述動(dòng)畫剪輯列表中,并清空原有的骨骼動(dòng)畫的動(dòng)畫剪輯。
[0027]將骨豁動(dòng)畫的動(dòng)畫剪輯(BoneAnimat1n.mAnimat1nClips)拷貝到腳本對(duì)象的動(dòng)畫剪輯列表(SMAnimat1nData.mAnimat1nClips)中,并清空 BoneAnimat1n.mAnimat1nClips。
[0028]在經(jīng)過(guò)步驟SI處理后,得到腳本對(duì)象scriptDataT,其中包含了原動(dòng)畫BoneAnimat1n.triggerFrames 和 BoneAnimat1n.mAnimat1nClips,各自大小依舊為200K和10K字節(jié)。
[0029]執(zhí)行完上述SI的各步驟后,采用實(shí)例化的方式對(duì)Unity3d骨骼動(dòng)畫插件SmoothMoves進(jìn)行加載,即執(zhí)行步驟S2,如圖4所示,步驟S2具體包括兩步,具體如下:
S21:預(yù)先加載所述的包含觸發(fā)幀列表和動(dòng)畫剪輯列表的腳本對(duì)象;
如S13和S14步驟中所述,經(jīng)前述步驟處理后,骨骼動(dòng)畫中的觸發(fā)巾貞(BoneAnimat1n.triggerFrames)和動(dòng)畫剪輯(BoneAnimat1n.mAnimat1nClips)已經(jīng)為空,不再占有大量?jī)?nèi)存空間。
[0030]而這些數(shù)據(jù)已被存儲(chǔ)到了腳本對(duì)象中,因此在實(shí)例化任一骨骼動(dòng)畫之前,需要預(yù)先加載該骨骼動(dòng)畫對(duì)應(yīng)的腳本對(duì)象,以供實(shí)例化時(shí)獲取相應(yīng)的觸發(fā)幀及動(dòng)畫剪輯信息。
[0031]腳本對(duì)象的加載方式無(wú)需做任何特殊處理,與現(xiàn)有的骨骼動(dòng)畫本身的加載方式相同。
[0032]S22:實(shí)例化骨骼動(dòng)畫并為其觸發(fā)幀和動(dòng)畫剪輯添加引用。
[0033]骨骼動(dòng)畫本身因?yàn)橐呀?jīng)清空了觸發(fā)幀和動(dòng)畫剪輯兩大塊數(shù)據(jù),可以相對(duì)較快的完成實(shí)例化。
[0034]實(shí)例化之后的骨骼動(dòng)畫因?yàn)橛|發(fā)幀和動(dòng)畫剪輯被清空,無(wú)法完成其現(xiàn)有的工作。此時(shí)便需要通過(guò)預(yù)先加載的腳本對(duì)象,為骨骼動(dòng)畫添加相關(guān)引用,具體為:
I將骨骼動(dòng)畫中的觸發(fā)巾貞(BoneAnimat1n.triggerFrames)指向腳本對(duì)象中的觸發(fā)中貞列表(SMAnimat1nData.triggerFrames)。
[0035]I將骨豁動(dòng)畫中的動(dòng)畫剪輯(BoneAnimat1n.mAnimat1nClips)指向腳本對(duì)象中的動(dòng)畫剪輯列表(SMAnimat1nData.mAnimat1nClips)。
[0036]經(jīng)上述操作后,當(dāng)游戲場(chǎng)景中要同時(shí)出現(xiàn)20個(gè)animat1nT動(dòng)畫時(shí),貝U在使用本發(fā)明的方法之前,就會(huì)產(chǎn)生20個(gè)骨骼動(dòng)畫(BoneAnimat1n),相應(yīng)的觸發(fā)巾貞(triggerFrames)就有20份,總大小為4000K字節(jié),動(dòng)畫剪輯(mAnimat1nClips)也有20份,總大小為2000K字節(jié)。而使用該發(fā)明的方法之后,僅存儲(chǔ)一個(gè)腳本對(duì)象scriptDataT。20個(gè)animat1nT動(dòng)畫依舊對(duì)應(yīng) 20 個(gè) BoneAnimat1n,但其 triggerFrames 和 mAnimat1nClips 均指向腳本對(duì)象的觸發(fā)巾貞列表(scriptDataT.triggerFrames)和腳本對(duì)象的動(dòng)畫剪輯列表(scriptData.mAnimat1nClips),而不是20份彼此獨(dú)立的拷貝。即20個(gè)動(dòng)畫文件,僅有一份triggerFrames和mAnimat1nClips數(shù)據(jù),大小依舊分別為200K和100K字節(jié),如圖5所
/Jn ο
[0037]實(shí)施例二:
本實(shí)施例除以下部分與實(shí)施例一不同外,其他部分均與實(shí)施例一相同:具體如下: 步驟313的拷貝后,還可根據(jù)需要對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行進(jìn)一步的優(yōu)化,如圖6所示,這種對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行優(yōu)化具體包括以下步驟:
8131:建立觸發(fā)巾貞骨骼集合(廿狀一沖!'孤1680116361:),該觸發(fā)巾貞骨骼集合中包含屬性不同的若干觸發(fā)巾貞骨骼()。
[0038]3132:建立骨骼動(dòng)畫觸發(fā)巾貞數(shù)組(80116八廿886沖1'肅68),骨骼動(dòng)畫觸發(fā)中貞數(shù)組中包含若干個(gè)觸發(fā)巾貞'孤16〉,觸發(fā)巾貞是以動(dòng)畫剪輯的索引((311? 和幀(色^腕)為鍵值,且每個(gè)觸發(fā)幀中存儲(chǔ)了相應(yīng)的動(dòng)畫剪輯的相應(yīng)幀上的所有骨骼關(guān)鍵幀信息,即觸發(fā)巾貞骨骼列表1:1-^^61-^81116801168),該列表包括若干觸發(fā)巾貞骨骨各(丁'部11680116 )。
[0039]8133:對(duì)每個(gè)觸發(fā)幀均建立一對(duì)應(yīng)的索引表,該索引表中存儲(chǔ)其對(duì)應(yīng)的觸發(fā)幀中的所有觸發(fā)幀骨骼在上述觸發(fā)幀骨骼集合的索引。該過(guò)程具體為:選取骨骼動(dòng)畫觸發(fā)幀數(shù)組(80116八II 1111211:1011.廿狀虹辦肅⑶)中的一個(gè)觸發(fā)巾貞(即元素忖),為1:?建立觸發(fā)巾貞骨骼索引表'孤1680116111(16^68),即分別為1:??jī)?nèi)的全部的觸發(fā)巾貞骨骼建立索引,每個(gè)觸發(fā)幀骨骼的索引對(duì)應(yīng)于上述觸發(fā)幀骨骼集合中的一個(gè)屬性相同的觸發(fā)幀骨骼。
[0040]在對(duì)每個(gè)觸發(fā)幀均建立對(duì)應(yīng)的索引表后,清除該觸發(fā)幀的全部觸發(fā)幀骨骼。
[0041]8134:將骨骼動(dòng)畫的各觸發(fā)幀的索引表拷貝到觸發(fā)幀列表中各觸發(fā)幀對(duì)應(yīng)位置處,并清空觸發(fā)幀列表中的觸發(fā)幀。
[0042]當(dāng)對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行進(jìn)一步的優(yōu)化后,骨骼動(dòng)畫觸發(fā)幀的數(shù)據(jù)量將更少,在此不再贅述。
[0043]上述實(shí)例化骨骼動(dòng)畫過(guò)程當(dāng)中,無(wú)需深度復(fù)制骨骼動(dòng)畫的觸發(fā)幀和動(dòng)畫剪輯,而是僅將骨骼動(dòng)畫的引用指向抽離出的觸發(fā)幀列表和動(dòng)畫剪輯列表即可,即當(dāng)對(duì)同一個(gè)動(dòng)畫文件進(jìn)行多次復(fù)制時(shí),僅需引用該骨骼動(dòng)畫所對(duì)應(yīng)的同一份觸發(fā)幀列表和動(dòng)畫剪輯列表,有效地減少了實(shí)例化過(guò)程中骨骼動(dòng)畫復(fù)制的數(shù)據(jù)量。
[0044]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何本領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),對(duì)本發(fā)明所做的變形或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述的權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,其特征在于,包括: 51:從動(dòng)畫文件的骨骼動(dòng)畫中抽離出觸發(fā)幀和動(dòng)畫剪輯,并分別形成觸發(fā)幀列表和動(dòng)畫剪輯列表; 52:每次實(shí)例化一個(gè)骨骼動(dòng)畫時(shí),先對(duì)所述觸發(fā)幀列表和動(dòng)畫剪輯列表進(jìn)行單獨(dú)加載,再為骨骼動(dòng)畫添加相應(yīng)引用。
2.根據(jù)權(quán)利要求1所述的提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,其特征在于,所述步驟SI具體包括以下步驟: 511:創(chuàng)建骨骼動(dòng)畫的腳本對(duì)象; 512:在所述腳本對(duì)象中創(chuàng)建觸發(fā)幀列表及動(dòng)畫剪輯列表; 513:將原有的骨骼動(dòng)畫的觸發(fā)幀拷貝到所述觸發(fā)幀列表中,并清空原有骨骼動(dòng)畫的觸發(fā)幀; S14:將原有的骨骼動(dòng)畫的動(dòng)畫剪輯拷貝到所述動(dòng)畫剪輯列表中,并清空原有骨骼動(dòng)畫的動(dòng)畫剪輯。
3.根據(jù)權(quán)利要求2所述的提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,其特征在于,所述步驟S13還包括對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行優(yōu)化,所述對(duì)骨骼動(dòng)畫的觸發(fā)幀進(jìn)行優(yōu)化具體包括以下步驟: 5131:建立觸發(fā)幀骨骼集合,所述觸發(fā)幀骨骼集合包含屬性不同的若干觸發(fā)幀骨骼; 5132:建立骨骼動(dòng)畫觸發(fā)幀數(shù)組,所述骨骼動(dòng)畫觸發(fā)幀數(shù)組包括若干觸發(fā)幀,每個(gè)觸發(fā)幀包括若干觸發(fā)幀骨骼; 5133:對(duì)每個(gè)觸發(fā)幀均建立一對(duì)應(yīng)的索引表,該索引表中存儲(chǔ)其對(duì)應(yīng)的觸發(fā)幀中的所有觸發(fā)幀骨骼在所述觸發(fā)幀骨骼集合的索引,在對(duì)每個(gè)觸發(fā)幀建立對(duì)應(yīng)的索引表后,清除該觸發(fā)幀的全部觸發(fā)幀骨骼; S13 4:將骨骼動(dòng)畫的各觸發(fā)幀的索引表拷貝到所述觸發(fā)幀列表中各觸發(fā)幀對(duì)應(yīng)位置處,并清空所述觸發(fā)幀列表中的觸發(fā)幀。
4.根據(jù)權(quán)利要求1或2或3所述的提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,其特征在于,所述步驟S2具體包括: 521:預(yù)先加載包含所述觸發(fā)幀列表及動(dòng)畫剪輯列表的腳本對(duì)象; 522:實(shí)例化所述骨骼動(dòng)畫并為其觸發(fā)幀和動(dòng)畫剪輯添加引用。
5.根據(jù)權(quán)利要求4所述的提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,其特征在于,所述步驟S22具體包括: 將骨骼動(dòng)畫中的觸發(fā)幀指向腳本對(duì)象中的觸發(fā)幀列表; 將骨骼動(dòng)畫中的動(dòng)畫剪輯指向腳本對(duì)象中的動(dòng)畫剪輯列表。
6.根據(jù)權(quán)利要求2所述的提高Unity3d骨骼動(dòng)畫插件SmoothMoves的加載速度的方法,其特征在于,所述步驟Sll中的所述腳本對(duì)象為一待填充數(shù)據(jù)的空表。
【文檔編號(hào)】G06T13/20GK104503795SQ201410819092
【公開日】2015年4月8日 申請(qǐng)日期:2014年12月25日 優(yōu)先權(quán)日:2014年12月25日
【發(fā)明者】曹青 申請(qǐng)人:上海愷英網(wǎng)絡(luò)科技有限公司