43 lines
1.8 KiB
C#
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)];
|
|
}
|
|
}
|
|
}
|