Spine Unity 使用笔记

一、Spine资源导入Unity

Spine导出的三个核心文件:

  1. .json - 存储骨骼动画数据
  2. .png - 图集纹理
  3. .atlas.txt - 图集位置信息

导入Unity后自动生成:

  • _Atlas材质
  • .atlas.txt的引用配置
  • Material材质文件
  • skeletonData配置(关联json和Atlas)

二、创建Spine动画对象

将骨骼动画拖入场景时有三个选项:

  1. Spine原生动画系统(SkeletonAnimation)
  2. Spine UI动画系统
  3. Unity Animator系统

三、Spine原生动画系统(SkeletonAnimation)

基础使用

private SkeletonAnimation sa;

void Start() {
    sa = GetComponent<SkeletonAnimation>();
}

动画控制API

  1. 简单播放
sa.loop = false;
sa.AnimationName = "jump";
  1. 高级控制
// 参数:轨道索引(默认0), 动画名, 是否循环
sa.AnimationState.SetAnimation(0, "jump", false);
  1. 转向控制
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);

优化建议

  1. 缓存频繁访问的动画和骨骼引用
  2. 使用对象池管理频繁创建的Spine对象
  3. 对移动平台注意图集大小和材质优化
  4. 使用SkeletonGraphic替代SkeletonAnimation用于UI动

遇到的问题

创建对象,颜色变浅并且有一点透明

这是因为在图集里面没有勾选sRPG(color Texture),如果没有勾选会认为你的图片在Spine中没有进行纹理预处理,Unity会再进行一次处理,导致颜色出现偏差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值