Unity之Spine筆記常用API

2022-06-05 19:54:08 字數 3724 閱讀 9141

//skeletondata

skeletonanimation skeletonanimation = getcomponent();

debug.log(skeletonanimation.name);//獲取角色名

debug.log(skeletonanimation.skeleton.bones[5].tostring()); //獲取所有骨骼陣列list

debug.log(skeletonanimation.skeleton.slots[5].tostring());//獲取所有插槽數組

debug.log(skeletonanimation.skeleton.data.animations[0].name.tostring());//獲取所有動畫陣列

skeletonanimation.skeleton.findbone("root").flipx = true;//根據骨骼名獲取骨骼

debug.log(skeletonanimation.skeleton.findboneindex("root").tostring());//根據骨骼名獲取骨骼的index

debug.log(skeletonanimation.skeleton.findslot("torso").attachment.name);//根據slot名獲取slot

debug.log(skeletonanimation.skeleton.findslotindex("torso").tostring());//根據slot名獲取slot index

debug.log(skeletonanimation.skeleton.data.findanimation("walk").name);//根據動畫名獲取動畫 

//skin

debug.log(skeletonanimation.skeleton.data.skins[0].name.tostring());//獲取所有 skin

spine.attachment _attachment = skeletonanimation.skeleton.data.skins[0].getattachment(5,"left lower leg");//從skin通過slot的index attachment的名獲取attachment

//bonedata

spine.bone _bone = skeletonanimation.skeleton.findbone("left upper leg");

debug.log(_bone.parent.tostring());//獲取骨骼的父骨骼

debug.log(_bone.data.length.tostring());//獲取骨骼長度

debug.log(_bone.rotation.tostring());//獲取骨骼旋轉

debug.log(_bone.data.scalex.tostring());//獲取骨骼放縮

debug.log(_bone.data.scaley.tostring());

debug.log(_bone.data.inheritrotation.tostring());// 是否旋轉值相對父骨骼 true是相對父骨骼

debug.log(_bone.data.inheritscale.tostring());//是否放縮值相對父骨骼 true是相對父骨骼

//slotdata

spine.slot _slot =  skeletonanimation.skeleton.findslot("torso");

debug.log(_slot.data.name);//獲取slot的名字

debug.log(_slot.data.bonedata.name);//獲取slot掛靠的bone

debug.log(_slot.r.tostring());//獲取slot的顏色r值

debug.log(_slot.data.attachmentname);//獲取pose下slot的attachment名

_slot.data.additiveblending = true;//獲取或設定slot時候用additive blending來渲染  注釋:用於特效?

//animation

debug.log(skeletonanimation.skeleton.data.animations[0].duration.tostring());//動畫持續時間?

list_timeline =  skeletonanimation.skeleton.data.animations[0].timelines;//獲取動畫timeline

//skeleton

spine.skeletondata _data = skeletonanimation.skeleton.data;//獲取skeletondata

debug.log(_data.bones[0].tostring()); //獲取所有骨骼

debug.log(_data.slots[0].tostring());//獲取所有slots

debug.log(skeletonanimation.skeleton.draworder[0].attachment.name);//獲取所有drawoder

debug.log(skeletonanimation.skeleton.skin.name);//獲取當前skin名

skeletonanimation.skeleton.r = 0.5f;//對skin的整體偏色 有rgba四個引數

debug.log(skeletonanimation.skeleton.time.tostring());//?

skeletonanimation.skeleton.flipx = true;//skeleton翻轉軸向

skeletonanimation.skeleton.flipy = true;

skeletonanimation.skeleton.x = 0;//skeleton的座標

skeletonanimation.skeleton.y = 0;

skeletonanimation.skeleton.setbonestosetuppose();

skeletonanimation.skeleton.setslotstosetuppose();

skeletonanimation.skeleton.settosetuppose();

獲取getattachment

skeletonanimation.skeleton.update(0.5f);//??

--換裝函式,但是必須在slot裡有這個attachment名

skeletonanimation = getcomponent(); skeletonanimation.skeleton.setattachment("rear_upper_arm","muzzle"); skeletonanimation.skeleton.getattachment();

--動畫翻轉

if(x > 0) skeletonanimation.skeleton.flipx = false;

else if(x < 0) skeletonanimation.skeleton.flipx = true;

skeletonanimation.state.setanimation(0, hitanimation, false); skeletonanimation.state.addanimation(0, currentanimation, true, 0);

注:(起始幀,動畫名,是否loop)

//角色之間的繪製排序

renderer.sortingorder = -5;

在unity中使用spine動畫

可以使用spine製作骨骼動畫來給unity使用。spine提供了unity執行包。執行包的版本一定要和spine版本一致,不然會報錯。匯入spine動畫 由spine匯出的動畫檔案有3個 xx.atlas,xx.json,xx.png。將這三個檔案直接匯入unity會報錯,將xx.atlas改為x...

Unity使用spine製作換裝系統

換裝系統很簡單,無非把握好兩點 1.對資料的處理。2.熟悉api。無論是spine還是龍骨亦或者是unity自帶的骨骼動畫系統皆是如此。熟悉api最快的方式就是看官方給的demo,了解常用的api即可。下面大致介紹下我用spine實現換裝的內容。換裝一般用到的是區域性換裝和整套換裝,區域性的話切換插...

Spine變色動畫在unity中失效的問題

最近美術同事做spine變色動畫的時候開啟了tint black選項來做顏色過渡變化的效果。但是到了程式這邊在unity中顯示的是灰度,沒有顏色變化。說白了就是改變spine材質的shader。預設情況下拖入到unity中是spine skeleton。如果spine動畫中開啟了tint black...