こんにちは、ハラルドさん。
お返事が大変遅くなってすみません。
多くの検証を行ったのですが、上記2つの方法で問題に直面してしまいました。
になりました。
===========================================================
■Slotカラーを変更する方法
What I should have suggested instead is using the UpdateComplete callback,
 
public class _TestSpine : MonoBehaviour
{
    SkeletonAnimation skeletonAnimation;
    private Slot slotTorso;
    
    private void Start()
    {
        skeletonAnimation = GetComponent<SkeletonAnimation>();
        
        // I'm just changing it to goblin skin for the video, so I'll skip it on code.
        SetSKin();
        
        // Spineアニメの見た目がアップデートされた後に呼び出されるコールバック
        skeletonAnimation.UpdateComplete += UpdateComplete;
        slotTorso = skeletonAnimation.skeleton.FindSlot("M45_/torso");
    }
    
    private void UpdateComplete(ISkeletonAnimation anim)
    {
        Debug.Log($"<color=#3dffff> Updated</color>");
        Color skinColor = new Color(0.7744197f, 0.8427672f, 0.7129068f, 1f);
    
        // It turns psychedelic colors.
        Color mixColor = new Color(skinColor.r + slotTorso.GetColor().r, skinColor.g + slotTorso.GetColor().g, skinColor.b + slotTorso.GetColor().b, slotTorso.GetColor().a);
        slotTorso.SetColor(mixColor);
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            Debug.Log("TestKey:0");
            skeletonAnimation.AnimationState.SetAnimation(0,"TestSlotColor1",true);
        }
        
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            Debug.Log("TestKey:1");
            skeletonAnimation.UpdateComplete -= UpdateComplete;
            slotTorso.SetColor( new Color(1,1,1,1f));
            
            Color skinColor = new Color(1,1,1,1f);
            Color OnSpineAnimColor  = new Color(0,0,0,1f);
            
            Color mixColor = new Color(skinColor.r + OnSpineAnimColor.r, skinColor.g + OnSpineAnimColor.g, skinColor.b + OnSpineAnimColor.b, OnSpineAnimColor.a);
            slotTorso.SetColor(mixColor);
            // mixColor == Color:(1,1,1,1)   However, black is expected. 
        }
    }
}
skinColorをゴブリンの肌色として定義します。
ご提案いただいたSlotカラーを変更する方法では、毎フレーム「緑の肌色+アニメで指定したSlotカラー」を計算する必要があります。しかしその方法が分かりません。
■1.取得方法
コードではアルファ値を除いて、「指定の肌色+Slotの色」を代入しています。
ご覧のようにサイケデリックな色が点滅しています。
FindSlotでは「現在のSlot色」を取得するため、2フレーム以降は「指定の肌色+1フレーム前で混合済みのSlot色」になってしまうようです。
Spineアニメ上のSlotカラーだけを取得する方法が必要ですが可能ですか?
■2.計算方法
また、単純に
Color SkinColor;
Color OnAnimSlotColor;
Color MixColor = SkinColor + OnAnimSlotColor;
という計算は不適切です
なぜなら白(1,1,1,1)+ 黒(0,0,0,1)を単純に加算すると白になってしまうからです。
これは肌色をUnity上で加算しないほとんどのキャラがSpineアニメ上でSlotColorを真っ黒にすることができなくなります。
そのため、Spineエディタ上で確認できるAttachmentカラー + Slotカラーのような色を再現できる計算が必要です。
■3.パフォーマンス
また、少し気になったのがパフォーマンスです。
Slotカラーの変更は負荷は高いですか?
この方法だと沢山のSlotをキャラクターの数だけ、毎フレーム色変えするため気になりました。
===========================================================
■アタッチメントカラーの変更をインスタンスごとに適用する方法
Slot slot;
slot.Attachment = slot.Attachment.Copy();
こちらの方法では、Spineアニメ上で別のAttachment切り替えが発生すると、Copyではない元々のアタッチメントが表示されることがわかりました。
おそらく、上記のコードはSlotの現在表示するアタッチメントを、Copyしたものに一時的に切り替えているだけのように見えます
また、SetSlotsToSetupPose()を使用すると元々のAttachmentに変わってしまうため、Attachmentからアプローチする方法は難しいと感じました。
ここまで読んでくださってありがとうございます!
何卒ご助言を頂ければ幸いです