Spine Unity 使用笔记_unity spine
一、Spine资源导入Unity
Spine导出的三个核心文件:
导入Unity后自动生成:
_Atlas
材质.atlas.txt
的引用配置Material
材质文件skeletonData
配置(关联json和Atlas)
二、创建Spine动画对象
将骨骼动画拖入场景时有三个选项:
- Spine原生动画系统(SkeletonAnimation)
- Spine UI动画系统
- Unity Animator系统
三、Spine原生动画系统(SkeletonAnimation)
基础使用
private SkeletonAnimation sa;void Start() { sa = GetComponent();}
动画控制API
- 简单播放:
sa.loop = false;sa.AnimationName = \"jump\";
- 高级控制:
// 参数:轨道索引(默认0), 动画名, 是否循环sa.AnimationState.SetAnimation(0, \"jump\", false);
- 转向控制:
sa.AnimationState.ScaleX = -1; // 水平翻转
动画事件
// 动画开始sa.AnimationState.Start += (trackEntry) => {};// 动画中断/清除sa.AnimationState.End += (trackEntry) => {};// 动画完成sa.AnimationState.Complete += (trackEntry) => {};// 自定义事件(Spine软件中添加)sa.AnimationState.Event += (trackEntry, event) => {};
四、Spine便捷特性
[SpineAnimation] // 快速选择动画public string animationName;[SpineBone] // 快速选择骨骼public string boneName;[SpineSlot] // 快速选择插槽public string slotName;[SpineAttachment] // 快速选择附件public string attachmentName;
五、高级操作
骨骼操作
// 获取骨骼Bone bone = sa.Skeleton.FindBone(\"boneName\");// 设置骨骼位置bone.X = 10f;bone.Y = 5f;
插槽和附件操作
// 获取插槽Slot slot = sa.Skeleton.FindSlot(\"slotName\");// 更换附件sa.Skeleton.SetAttachment(\"slotName\", \"newAttachmentName\");
多轨道动画
// 在轨道1播放待机动画(循环)sa.AnimationState.SetAnimation(1, \"idle\", true);// 在轨道0播放攻击动画(不循环)sa.AnimationState.SetAnimation(0, \"attack\", false);
优化建议
- 缓存频繁访问的动画和骨骼引用
- 使用对象池管理频繁创建的Spine对象
- 对移动平台注意图集大小和材质优化
- 使用SkeletonGraphic替代SkeletonAnimation用于UI动
遇到的问题
创建对象,颜色变浅并且有一点透明
这是因为在图集里面没有勾选sRPG(color Texture),如果没有勾选会认为你的图片在Spine中没有进行纹理预处理,Unity会再进行一次处理,导致颜色出现偏差