fix: SkillController 클립 자동 등록 필터 추가 및 Drog 프리팹 적용

- clipAutoRegisterFilter 필드 추가로 각 캐릭터별 클립 자동 등록 필터 분리
- 필터 좌우 _ 제거 로직 추가 (예: "_Drog_" → "Drog" 매칭)
- AutoRegisterPlayerClips → AutoRegisterClips으로 리네임
- Drog 프리팹에 clipAutoRegisterFilter = "_Drog_" 설정
- AC_Boss_Default의 Skill 상태 Motion을 baseSkillClip과 동일 에셋으로 수정
This commit is contained in:
2026-04-02 12:45:11 +09:00
parent bd99283f17
commit 0402ca9b6c
2 changed files with 21 additions and 14 deletions

View File

@@ -45,7 +45,9 @@ namespace Colosseum.Skills
[SerializeField] private AnimationClip baseSkillClip;
[Header("네트워크 동기화")]
[Tooltip("\"_Player_\" 이름이 포함된 클립이 자동 등록됩니다. 서버→클라이언트 클립 동기화에 사용됩니다.")]
[Tooltip(" 이름이 포함된 클립이 자동 등록됩니다. 서버→클라이언트 클립 동기화에 사용됩니다.")]
[SerializeField] private string clipAutoRegisterFilter = "_Player_";
[Tooltip("자동 등록된 클립 목록 (서버→클라이언트 클립 인덱스 동기화용)")]
[SerializeField] private List<AnimationClip> registeredClips = new();
[Header("설정")]
@@ -110,15 +112,19 @@ namespace Colosseum.Skills
#if UNITY_EDITOR
private void OnValidate()
{
AutoRegisterPlayerClips();
AutoRegisterClips();
}
/// <summary>
/// "_Player_"가 포함된 모든 AnimationClip을 registeredClips에 자동 등록합니다.
/// clipAutoRegisterFilter 이름이 포함된 모든 AnimationClip을 registeredClips에 자동 등록합니다.
/// 서버→클라이언트 클립 동기화 인덱스의 일관성을 위해 이름순으로 정렬합니다.
/// </summary>
private void AutoRegisterPlayerClips()
private void AutoRegisterClips()
{
string trimmedFilter = clipAutoRegisterFilter.Trim('_');
if (string.IsNullOrEmpty(trimmedFilter))
return;
string[] guids = AssetDatabase.FindAssets("t:AnimationClip", new[] { "Assets/_Game/Animations" });
var clips = new List<AnimationClip>();
@@ -127,7 +133,7 @@ namespace Colosseum.Skills
string path = AssetDatabase.GUIDToAssetPath(guid);
string clipName = Path.GetFileNameWithoutExtension(path);
if (clipName.IndexOf("_Player_", StringComparison.OrdinalIgnoreCase) >= 0)
if (clipName.IndexOf(trimmedFilter, StringComparison.OrdinalIgnoreCase) >= 0)
{
AnimationClip clip = AssetDatabase.LoadAssetAtPath<AnimationClip>(path);
if (clip != null)
@@ -155,7 +161,7 @@ namespace Colosseum.Skills
{
registeredClips.Clear();
registeredClips.AddRange(clips);
Debug.Log($"[SkillController] 자동 등록: {clips.Count}개 Player 클립", this);
Debug.Log($"[SkillController] 자동 등록: {clips.Count}개 클립 (필터: {clipAutoRegisterFilter})", this);
}
}
#endif