Unity之Spine筆記常用API


//skeletonData
 SkeletonAnimation skeletonAnimation = GetComponent<SkeletonAnimation>();
Debug.Log(skeletonAnimation.name);//獲取角色名
Debug.Log(skeletonAnimation.skeleton.bones[5].ToString()); //獲取所有骨骼數組list<spine.Bone>
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<Spine.Timeline> _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();

//skeletonAnimation.skeleton.GetAttachment();//獲取GetAttachment
//skeletonAnimation.skeleton.SetAttachment();
skeletonAnimation.skeleton.Update(0.5f);//??

 

--換裝函數,但是必須在slot里有這個attachMent名

skeletonAnimation = GetComponent<SkeletonAnimation>(); 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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM