In your first example, new Skin()
means creating a new empty skin. The name you give it doesn't matter.
When you use it as the skeleton's skin, it will be empty, as expected, because it's a new empty skin.
In your second example, SetSkin
is asking the skeleton to look for "armor-L-2" in its skeleton data and use it.
If it finds it, it will use it. And if it has attachments, they will be used. When you call SetSlotsToSetupPose
, it will use the attachments defined in the skin to return the slot attachments to setup pose.
In your third example, FindSkin
is asking the skeleton to look for "armor-L-2" in its skeleton data.
AddAttachments
is telling it to add attachment to that skin from a different skin.
"armor-L-2" is from your shared skeleton data, any other instances of this skeleton using "armor-L-2" will also get the attachments from "eyes-1".
I think what you want is
Skin newSkin = new Skin("some special custom skin");
Skin armor = data.FindSkin("armor-L-2");
Skin eyes = data.FindSkin("eyes-1");
newSkin.AddAttachments(armor);
newSkin.AddAttachments(eyes);
_skel.skeleton.SetSkin(newSkin);
_skel.skeleton.SetSlotsToSetupPose();