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是相對父骨骼oop

 

//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();ip

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

 

--換裝函數,可是必須在slot裏有這個attachMent名it

skeletonAnimation = GetComponent<SkeletonAnimation>(); skeletonAnimation.skeleton.SetAttachment("rear_upper_arm","muzzle"); skeletonAnimation.skeleton.GetAttachment();io

 

--動畫翻轉渲染

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;

相關文章
相關標籤/搜索