업그레이드 데이터 입력 로직 및 기능 추가
캐릭터 스탯을 PlayerStats 컴포넌트에서 모아서 관리하도록 변경 코드에서도 마찬가지
This commit is contained in:
@@ -45,52 +45,38 @@ namespace Northbound.Editor
|
||||
|
||||
private static void SetupPrefabComponents(GameObject prefab, PlayerData playerData)
|
||||
{
|
||||
var networkController = prefab.GetComponent<NetworkPlayerController>();
|
||||
if (networkController != null)
|
||||
// PlayerStats에 모든 스탯 설정
|
||||
var playerStats = prefab.GetComponent<PlayerStats>();
|
||||
if (playerStats != null)
|
||||
{
|
||||
SerializedObject so = new SerializedObject(networkController);
|
||||
so.FindProperty("moveSpeed").floatValue = playerData.moveSpeed;
|
||||
so.FindProperty("maxHealth").intValue = playerData.maxHp;
|
||||
SerializedObject so = new SerializedObject(playerStats);
|
||||
so.FindProperty("baseMaxHp").intValue = playerData.maxHp;
|
||||
so.FindProperty("baseDamage").intValue = playerData.atkDamage;
|
||||
so.FindProperty("baseCapacity").intValue = playerData.capacity;
|
||||
so.FindProperty("baseManpower").floatValue = playerData.manpower;
|
||||
so.FindProperty("baseMoveSpeed").floatValue = playerData.moveSpeed;
|
||||
so.FindProperty("baseSight").floatValue = playerData.sight;
|
||||
so.FindProperty("baseAttackRange").floatValue = playerData.atkRange;
|
||||
so.ApplyModifiedProperties();
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated NetworkPlayerController: moveSpeed={playerData.moveSpeed}, maxHealth={playerData.maxHp}");
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated PlayerStats: " +
|
||||
$"maxHp={playerData.maxHp}, damage={playerData.atkDamage}, " +
|
||||
$"capacity={playerData.capacity}, manpower={playerData.manpower}, " +
|
||||
$"moveSpeed={playerData.moveSpeed}, sight={playerData.sight}, " +
|
||||
$"attackRange={playerData.atkRange}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"[PlayerPrefabSetup] PlayerStats component not found on prefab!");
|
||||
}
|
||||
|
||||
// AttackAction의 attackCooldown은 별도 설정 (스탯이 아님)
|
||||
var attackAction = prefab.GetComponent<AttackAction>();
|
||||
if (attackAction != null)
|
||||
{
|
||||
SerializedObject so = new SerializedObject(attackAction);
|
||||
so.FindProperty("attackRange").intValue = playerData.atkRange;
|
||||
so.FindProperty("attackDamage").intValue = playerData.atkDamage;
|
||||
so.FindProperty("attackCooldown").floatValue = playerData.atkIntervalSec;
|
||||
so.ApplyModifiedProperties();
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated AttackAction: attackRange={playerData.atkRange}, attackDamage={playerData.atkDamage}, attackCooldown={playerData.atkIntervalSec}");
|
||||
}
|
||||
|
||||
var visionProvider = prefab.GetComponent<PlayerVisionProvider>();
|
||||
if (visionProvider != null)
|
||||
{
|
||||
SerializedObject so = new SerializedObject(visionProvider);
|
||||
so.FindProperty("visionRange").floatValue = playerData.sight;
|
||||
so.ApplyModifiedProperties();
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated PlayerVisionProvider: visionRange={playerData.sight}");
|
||||
}
|
||||
|
||||
var resourceInventory = prefab.GetComponent<PlayerResourceInventory>();
|
||||
if (resourceInventory != null)
|
||||
{
|
||||
SerializedObject so = new SerializedObject(resourceInventory);
|
||||
so.FindProperty("maxResourceCapacity").intValue = playerData.capacity;
|
||||
so.ApplyModifiedProperties();
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated PlayerResourceInventory: maxResourceCapacity={playerData.capacity}");
|
||||
}
|
||||
|
||||
var playerInteraction = prefab.GetComponent<PlayerInteraction>();
|
||||
if (playerInteraction != null)
|
||||
{
|
||||
SerializedObject so = new SerializedObject(playerInteraction);
|
||||
so.FindProperty("workPower").floatValue = playerData.manpower;
|
||||
so.ApplyModifiedProperties();
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated PlayerInteraction: workPower={playerData.manpower}");
|
||||
Debug.Log($"[PlayerPrefabSetup] Updated AttackAction: attackCooldown={playerData.atkIntervalSec}");
|
||||
}
|
||||
|
||||
EditorUtility.SetDirty(prefab);
|
||||
|
||||
Reference in New Issue
Block a user