using Spine.Unity; using UnityEngine; [CreateAssetMenu(fileName = "HeroSkin_", menuName = "SO_Data/HeroSkin")] public class HeroSkinSO : ScriptableObject { [Header("Identity")] public string skinId; public int heroId; public string skinName; public string ally_heroDesignation; [Header("Ownership")] public bool isDefaultSkin; public bool unlockedByDefault; public string sourceDlcId; [Header("Sort")] public int sortOrder; [Header("Inspector")] public Sprite ally_heroImage; [Header("Inspector")] public Sprite ally_heroProfile; [Header("Inspector")] public Sprite ally_heroSelectIcon; [Header("Inspector")] public Sprite ally_heroIcon; [Header("Inspector")] public Sprite ally_heroPoster; [Header("Inspector")] public Sprite ally_hero_HD_image; [Header("Inspector")] public Sprite ally_hero_squareProfile; [Header("spine")] public SkeletonDataAsset ally_heroSpineData; [Header("Inspector")] public Color ally_heroThemeColor = Color.white; [Header("Inspector")] [TextArea(3, 10)] public string skinDescription; public string GetResolvedSkinId() { if (!string.IsNullOrWhiteSpace(skinId)) { return skinId.Trim(); } string safeName = string.IsNullOrWhiteSpace(name) ? "skin" : name.Trim(); return "hero_" + heroId + "_" + safeName; } }