Project_WL/Assets/WL/Scripts/Player/CharacterRoster.cs

43 lines
1.8 KiB
C#

using UnityEngine;
namespace WL.Player
{
/// <summary>플레이어로 쓸 수 있는 캐릭터 1종의 정의</summary>
[System.Serializable]
public class CharacterEntry
{
[Tooltip("HUD 버튼에 표시할 이름")]
public string displayName = "Character";
[Tooltip("씬에 배치할 플레이어 프리팹 (PlayerController 를 가진 루트)")]
public GameObject prefab;
[Tooltip("버튼 더미 아이콘 색 (스프라이트가 없을 때 쓴다 · 임시)")]
public Color iconColor = Color.white;
}
/// <summary>
/// 캐릭터 교체 목록의 단일 출처(SOT · PD #711).
/// 순서가 곧 토글 순환 순서다. 값은 전부 여기서 읽는다(코드 상수 금지 · C45).
/// 에셋 경로: Assets/WL/Settings/CharacterRoster.asset
/// </summary>
[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)];
}
}
}