diff --git a/spine-c/src/spine/Skeleton.c b/spine-c/src/spine/Skeleton.c index 87404bc1b..13c948f6f 100644 --- a/spine-c/src/spine/Skeleton.c +++ b/spine-c/src/spine/Skeleton.c @@ -163,7 +163,17 @@ int spSkeleton_setSkinByName (spSkeleton* self, const char* skinName) { } void spSkeleton_setSkin (spSkeleton* self, spSkin* newSkin) { - if (self->skin && newSkin) spSkin_attachAll(newSkin, self, self->skin); + if (!self->skin) { + int i; + for (i = 0; i < self->slotCount; ++i) { + spSlot* slot = self->slots[i]; + if (slot->data->attachmentName) { + spAttachment* attachment = spSkin_getAttachment(newSkin, i, slot->data->attachmentName); + if (attachment) spSlot_setAttachment(slot, attachment); + } + } + } else if (newSkin) /**/ + spSkin_attachAll(newSkin, self, self->skin); CONST_CAST(spSkin*, self->skin) = newSkin; }