Project_WL/AgentScripts/WL826_WeaponPrefabSetup.cs

47 lines
2.3 KiB
C#

// WL826_WeaponPrefabSetup.cs — 무기 모델 프리팹 생성 + Addressables 등록 (에디터 · 멱등) : 망치(두손 해머) 추가
// PD 2026-10-09 「해머는 무기가 제대로 보이지 않아(방패를 들고 있는 모션)」 → 둔기방패 직업의 방패·메이스 대신 두손 해머 모델 1개
// unity command run_script --file AgentScripts/WL826_WeaponPrefabSetup.cs --entry WL826_WeaponPrefabSetup.Run --timeout 120
using System.Text;
using UnityEditor;
using UnityEditor.AddressableAssets;
using UnityEditor.AddressableAssets.Settings;
using UnityEngine;
public static class WL826_WeaponPrefabSetup
{
static readonly string[][] Models =
{
new[] { "Assets/ResWork/PurePoly/Fantasy RPG Weapons/Meshes/PP_Theme_01_Hammer_001.fbx", "Assets/Res_Addr/Weapon/PP_Theme_01_Hammer_001.prefab" },
new[] { "Assets/ResWork/PurePoly/Fantasy RPG Weapons/Meshes/PP_Theme_02_Hammer_001.fbx", "Assets/Res_Addr/Weapon/PP_Theme_02_Hammer_001.prefab" },
};
public static string Run()
{
var sb = new StringBuilder();
var settings = AddressableAssetSettingsDefaultObject.Settings;
foreach (var m in Models)
{
if (AssetDatabase.LoadAssetAtPath<GameObject>(m[1]) == null)
{
var fbx = AssetDatabase.LoadAssetAtPath<GameObject>(m[0]);
if (fbx == null) { sb.Append("모델 없음 ").Append(m[0]).Append(" · "); continue; }
var inst = (GameObject)PrefabUtility.InstantiatePrefab(fbx);
inst.name = System.IO.Path.GetFileNameWithoutExtension(m[1]);
PrefabUtility.SaveAsPrefabAsset(inst, m[1]);
Object.DestroyImmediate(inst);
sb.Append("프리팹 생성 ").Append(m[1]).Append(" · ");
}
if (settings != null)
{
var guid = AssetDatabase.AssetPathToGUID(m[1]);
var e = settings.CreateOrMoveEntry(guid, settings.DefaultGroup, false, false);
e.address = m[1];
sb.Append("주소 ").Append(m[1]).Append(" · ");
}
}
if (settings != null) settings.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, null, true, true);
AssetDatabase.SaveAssets();
return sb.ToString();
}
}