Unity Spine 换装

这篇博客介绍了如何在Unity中使用Spine 3.8版本进行角色换装,详细讲解了更新的API,包括获取Skeleton、选择Slot以及更换Attachment的步骤。提供了通过Atlas获取Region和直接使用Texture2D或Sprite创建新Attachment的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新

Spine3.8版本中增加了新的API可以更方便地切换Attachment

var slotName = "weapon";
var attachmentName = "sword2";
GetComponent<SkeletonAnimation>().Skeleton.SetAttachment(slotName, attachmentName);

环境:Spine3.7

结构

  • Atlas List<AtlasRegion> regions
  • Skeleton ExposedList<Slot> slots

获得Skeleton

GetComponent<SkeletonMecanim>().Skeleton;
GetComponent<SkeletonAnimation>().Skeleton;
GetComponent<skeletonRenderer>().Skeleton;

获得Slot

var slotName = "weapon";
var skeleton = GetComponent<SkeletonMecanim>().Skeleton;
skeleton.FindSlot(slotName);

更换Attachment

  • 通过Atlas获得Region,并替换Attachment(官方案例)
public static void ReplaceAttachmentFromAtlas(this SkeletonRenderer skeletonRenderer, string slotName, SpineAtlasAsset atlasAsset, string regionName)
{
    var slot = skeletonRenderer.Skeleton.FindSlot(slotName);
    var originalAttachment = slot.Attachment;
    var atlas = atlasAsset.GetAtlas();
    var region = atlas.FindRegion(regionName);
    var scale = skeletonRenderer.skeletonDataAsset.scale;
    if (originalAttachment != null)
    {
        slot.Attachment = originalAttachment.GetRemappedClone(region, true, true, scale);
    }
    else
    {
        var newRegionAttachment = region.ToRegionAttachment(region.name, scale);
        slot.Attachment = newRegionAttachment;
    }
}
  • 直接使用Texture2D或Sprite创建Attachment并进行替换
using Spine.Unity.Modules.AttachmentTools;
public static RegionAttachment ReplaceAttachmentFromSprite(this Skeleton skeleton, string slotName, Sprite sprite, Shader shader, bool applyPMA, float rotation = 0f)
{
    RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader, rotation: rotation) : sprite.ToRegionAttachment(new Material(shader), rotation: rotation);
    skeleton.FindSlot(slotName).Attachment = att;
    return att;
}

参考

简书 PA_ Spine使用图片换装 - Unity

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值