DragonBones
DragonBones是白鷺時代推出的面向設(shè)計師的2D游戲動畫和富媒體內(nèi)容創(chuàng)作平臺,他提供了2D骨骼動畫解決方案和動態(tài)漫畫解決方案刷喜。
支持的數(shù)據(jù)格式較多就不列舉了,主要是記錄下DragonBones在Unity下的使用流程的簡單記錄怀伦,有空再繼續(xù)挖坑。
DragonBonesPro(ver 5.6)
DragonBones的導(dǎo)出文件在Unity中的使用涉及到一些文件名或者動畫對象名的使用,這些是在DragonBones制作的時候確定的,所以要先從制作軟件DragonBonesPro記錄起。
軟件界面
流程記錄
DragonBonesPro部分
因為在谷歌動畫這方面的制作是小白以下小透明的水平,所以以官方的骨骼動畫實例為例進(jìn)行流程記錄,就是那只顏色很環(huán)保的小青龍蒲犬。點擊就可以打開到骨骼動畫的示例Demo的骨骼動畫制作界面。
因為軟件帶中文界面就不過多說明稀火,同時也是為了說明的時候不夠?qū)I(yè)直接跳過到項目的骨骼動畫導(dǎo)出流程暖哨。
導(dǎo)出前需要注意的是,場景樹窗口最上層的節(jié)點名字凰狞,應(yīng)該是該骨骼Armature的名字篇裁,該名字是后面在Unity中創(chuàng)建使用的參數(shù)具體值
該版本的導(dǎo)出界面是這樣的。
導(dǎo)出是以"動畫數(shù)據(jù)+紋理"的形式導(dǎo)出赡若,設(shè)置通常按照默認(rèn)的設(shè)置就行达布,特別的一些的如紋理類型設(shè)置也相對簡單,使用默認(rèn)就行逾冬,也可以自行調(diào)試并不麻煩
點擊完成后會生成3個文件黍聂,生成的文件名有固定格式其中兩個文件為json數(shù)據(jù)文件躺苦,一個為png圖片文件
XXX_ske.json:這個json文件中的數(shù)據(jù)我們可以用josn工具格式化輸出一下看到是記錄了骨骼動畫的基本信息,如幀率产还,名字匹厘,版本,適用的版本脐区。其他的就是骨骼的配置信息以及骨骼動畫的配置信息愈诚,蒙皮信息。主要需要注意的是armature關(guān)鍵字下的name字段牛隅,創(chuàng)建的時候使用的是這個字段炕柔,如果無法創(chuàng)建可以檢查下是否字段正確。
XXX_tex.json:這個json文件中的數(shù)據(jù)主要是導(dǎo)出的的png圖集的配置信息媒佣,圖片讀取的文件位置信息匕累。
XXX_text.png:這個就是DragonBonesPro打包出來的圖集,因為需要在Unity中使用所以圖片尺寸通常是2的冪次方相關(guān)的數(shù)值默伍,為的是提高圖片使用的運(yùn)行效率欢嘿,是Unity方面的相關(guān)不贅述。
至此DragonBonesPro操作部分結(jié)束巡验。
Unity(ver 5.6.4)部分
直接release頁面下載DragonBonesForUnity.unitypackage际插,方便安裝嘛。使用Assets->Import Package->Custom Package...導(dǎo)入显设,導(dǎo)入完成之后是這樣的框弛。Demo實例以及相關(guān)的資源主要在Demo文件夾目錄下,可以打開其中對應(yīng)場景播放查看對應(yīng)Demo實例捕捂,實現(xiàn)的功能腳本通常綁定在場景的一個明明為Demo的物體上瑟枫,也可以通過DragonBones->Demos->Scripts查看對應(yīng)的腳本
將之前我們得到的三個文件復(fù)制或者剪切,粘貼到Unity的Resources文件夾目錄下指攒,任何Resource文件夾都可以慷妙,并且可以在Resources文件夾下建一個總的骨骼動畫專門文件夾,分類管理也可允悦。當(dāng)然膝擂,存放在Resources文件夾下只是方便說明而已,也可以通過覆寫加載的方法采用其他方式加載存放在其他路徑的文件隙弛,稍后會提到架馋。
新建一個新的場景,新建一個物體全闷,新建一個C#腳本叉寂,把腳本捆綁到物體上,開始編輯腳本总珠。創(chuàng)建骨骼動畫物體之前需要加載對應(yīng)骨骼動畫的相關(guān)資源屏鳍,現(xiàn)在的版本有兩種方式進(jìn)行加載勘纯,一種是創(chuàng)建Unity Data,一種是使用代碼直接加載钓瞭。
創(chuàng)建UnityData的方式是選中3個我們導(dǎo)入的骨骼動畫資源文件驳遵,右鍵菜單Create->DragonBones->Create Unity Data,如果沒有選中3個資源文件降淮,是不能進(jìn)行創(chuàng)建的超埋。接下來在腳本中聲明一個UnityDragonBonesData對象后再Inspector界面綁定對應(yīng)的資源文件即可,然后使用代碼進(jìn)行加載佳鳖。
using DragonBones;
public UnityDragonBonesData dragonBoneData;
void Start()
{
UnityFactory.factory.LoadData(this.dragonBoneData);
}
使用代碼直接進(jìn)行加載的話需要手動傳入需要加載的兩個位置文件的地址。
using DragonBones;
// folder path : Assets\Resources\DragonBones\Dragon
void Start()
{
UnityFactory.factory.LoadDragonBonesData("DragonBones/Dragon/Dragon_ske");
UnityFactory.factory.LoadTextureAtlasData("DragonBones/Dragon/Dragon_tex");
}
加載完之后的工作就是創(chuàng)建了媒惕,創(chuàng)建一個變量然后調(diào)用方法得到返回值與之關(guān)聯(lián)即可系吩,以代碼加載的方式為例。
using DragonBones;
private UnityArmatureComponent _armatureComp;
void Start () {
UnityFactory.factory.LoadDragonBonesData("DragonBones/Dragon/Dragon_ske");
UnityFactory.factory.LoadTextureAtlasData("DragonBones/Dragon/Dragon_tex");
_armatureComp = UnityFactory.factory.BuildArmatureComponent("Dragon", "Dragon");
}
調(diào)用的方法是UnityFactory.factory.BuildArmatureComponent妒蔚,第一參數(shù)為需要創(chuàng)建的骨骼動畫名穿挨,第二參數(shù)為工程名,對應(yīng)的是骨骼json文件中的armature節(jié)點數(shù)組的name字段和根節(jié)點的name字段肴盏。簡單的來說就是如果設(shè)置了第二個屬性則查找對應(yīng)工程的緩存數(shù)據(jù)中對應(yīng)名稱的骨骼動畫科盛,否則的話就自動查找第一個名字匹配的骨骼動畫。
第二個參數(shù)可以手動設(shè)置菜皂,可以根據(jù)自己設(shè)定的規(guī)則在加載的時候進(jìn)行設(shè)置贞绵,具體查看UnityFactory的方法注釋說明。
播放動畫方面是使用的DragonBones提供骨骼組件UnityArmatureComponent 中的動畫對象進(jìn)行播放恍飘≌ケ溃可以播放的動畫的名字可以通過json查看,不過看起來不是很方面章母,最好還是在DragonBonesPro中查看母蛛。切換到動畫制作面板后即可以發(fā)現(xiàn)動畫命名窗口。
將上圖的根據(jù)需要調(diào)用方法傳入對應(yīng)的動畫名即可乳怎,比如行走動畫
_armatureComp.animation.Play("walk");
其他
如果出現(xiàn)報空指針錯誤彩郊,先確認(rèn)地址是否填錯或者參數(shù)是否填錯,然后確認(rèn)調(diào)用方法的返回值是否正常蚪缀。
寫下這篇秫逝,很多地方只是初步記錄所了解,用詞可能不甚明確精準(zhǔn)椿胯,有錯誤望指正筷登。