스텟 연동 관련해서 질문이 있습니다.
182
작성한 질문수 26
제가 기존에 개발해둔 아이템 시스템을 연동시키면서 아이템의 스텟을 정할때 Resources/Stat폴더를 참조하고 그걸 기반으로 Enum으로 해당 스텟들이 있는 스크립트 파일을 만든 다음에 아래에 있는 버튼을 눌러서 일일히 Enum 파일을 동기화시켰는데 너무 번거로운것 같습니다. 생성, 삭제, 수정할때마다 동기화시키면 작업할때마다 딜레이가 너무 커지는데 다른 방법이 있을까요
if (dataType == typeof(Stat))
{
GUI.color = Color.yellow;
// Data를 이름 순으로 정렬하는 Button을 그림
if (GUILayout.Button($"Press it after you finish editing"))
{
StatEnumSynchronizer.SyncStatEnum();
EditorUtility.SetDirty(database);
AssetDatabase.SaveAssets();
}
}
아래는 해당 enum파일을 만드는 스크립트입니다.
using System;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
public static class StatEnumSynchronizer
{
private const string StatFolderPath = "Assets/Resources/Stat";
[MenuItem("Tools/Sync Stat Enum")]
public static void SyncStatEnum()
{
if (!Directory.Exists(StatFolderPath))
{
Debug.LogError($"Directory does not exist: {StatFolderPath}");
return;
}
var statFiles = Directory.GetFiles(StatFolderPath, "*.asset", SearchOption.TopDirectoryOnly);
var statCodeNames = statFiles
.Select(file => AssetDatabase.LoadAssetAtPath<Stat>(file))
.Where(stat => stat != null)
.Select(stat => stat.CodeName)
.Distinct()
.OrderBy(name => name)
.ToList();
string enumPath = "Assets/Scripts/Enum/ItemStatusAttribute.cs";
using (var writer = new StreamWriter(enumPath, false))
{
writer.WriteLine("public enum ItemStatusAttribute");
writer.WriteLine("{");
writer.WriteLine(" Default,");
foreach (var codeName in statCodeNames)
{
string enumName = SanitizeEnumName(codeName);
writer.WriteLine($" {enumName},");
}
writer.WriteLine("}");
}
AssetDatabase.Refresh();
Debug.Log("Stat Enum synchronized.");
}
private static string SanitizeEnumName(string name)
{
return new string(name
.Where(c => !char.IsWhiteSpace(c) && (char.IsLetterOrDigit(c) || c == '_'))
.ToArray())
.Replace(" ", "_")
.Replace("-", "_")
.ToUpper();
}
}
답변 1
0
생각을 너무 복잡하고 쓸데없이 한 것 같습니다 그냥 아이템 스크립트에서 Stat을 참조하고 장착, 해제 할때마 디폴트 밸류를 올리거나 내리면 되는거였네요
Indicator와 SelectionAction 및 SearchAction 간의 관계에 대해 질문있습니다.
0
70
2
ChargingState에서 질문이 있습니다.
0
49
1
Effect.GetData 함수 질문있습니다.
0
45
2
CanTransitionToSelf 질문 있습니다.
0
53
2
Stat의 MaxValue에 관하여 질문이 있습니다.
0
42
1
Stat vs StatScaleFloat
0
75
4
애니매이션 버그가 있는것 같습니다.
0
65
2
StatsOverride질문이 있습니다.
0
50
2
SetBonusValue함수 질문있습니다.
0
46
2
오늘 수강시작한 취준생입니다.
0
49
1
사소하지만 에디터 관련 질문있습니다
0
69
1
스킬시스템을 데이터 테이블화 하는 법에 대해 감이안잡혀서 질문드립니다.
0
146
2
TargetSearcher에 대해서 질문이 있습니다
0
52
1
돌진해서 몸박을하면 피격자를 날리면서 데미지를 입히는 스킬은 이 시스템에서 어떻게 만들 수 있을까요??
0
116
2
스킬 관련 질문입니다
0
110
2
통일된 Stat을 사용하지 않고 모듈화 방식으로 Stats를 만드신 이유가 궁금합니다.
0
152
1
Effect에 기능 확장에 대해서 질문이 있습니다.
0
149
2
SkillData 구조체 질문
0
122
1
스킬트리 저장 질문입니다
0
135
2
BT와 FSM을 활용해 몬스터 AI 구현
0
350
2
MonoStateMachine을 만든 이유가 잘 이해가 가지 않습니다.
0
128
1
근접 콤보 공격을 만들고 싶습니다.
0
153
1
하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.
0
190
1
올해에 예정된 새로운 강의가 있으신지요?
0
115
2





