using UnityEngine; namespace WL.Player { /// 플레이어로 쓸 수 있는 캐릭터 1종의 정의 [System.Serializable] public class CharacterEntry { [Tooltip("HUD 버튼에 표시할 이름")] public string displayName = "Character"; [Tooltip("씬에 배치할 플레이어 프리팹 (PlayerController 를 가진 루트)")] public GameObject prefab; [Tooltip("버튼 더미 아이콘 색 (스프라이트가 없을 때 쓴다 · 임시)")] public Color iconColor = Color.white; } /// /// 캐릭터 교체 목록의 단일 출처(SOT · PD #711). /// 순서가 곧 토글 순환 순서다. 값은 전부 여기서 읽는다(코드 상수 금지 · C45). /// 에셋 경로: Assets/WL/Settings/CharacterRoster.asset /// [CreateAssetMenu(fileName = "CharacterRoster", menuName = "WL/Character Roster")] public class CharacterRoster : ScriptableObject { [Tooltip("토글 순환 순서. 0 번이 시작 캐릭터")] public CharacterEntry[] entries = new CharacterEntry[0]; [Header("교체 동작 (임시값)")] [Tooltip("교체 직후 입력을 잠그는 시간(초). 손가락이 버튼에서 떨어지기 전에 이동이 시작되는 것을 막는다 · 임시 0.2")] public float switchInputLockSeconds = 0.2f; [Tooltip("교체 시 시작 시퀀스(쓰러짐→기상)를 다시 재생하지 않는다. 최초 1회만 재생")] public bool playIntroOnlyOnce = true; public int Count { get { return entries != null ? entries.Length : 0; } } public CharacterEntry Get(int index) { if (entries == null || entries.Length == 0) return null; return entries[Mathf.Clamp(index, 0, entries.Length - 1)]; } } }