// WL770_MakeAsset.cs — PD 지시 #770 : WLTargetingSettings 에셋 생성/갱신 (에디터 전용) // unity command run_script --file AgentScripts/WL770_MakeAsset.cs --entry WL770_MakeAsset.Run // // 값의 SOT 는 이 에셋이다(C45). 이 스크립트는 "에셋을 처음 만들 때의 초기값"만 넣으며, // 초기값 = WLTargetingSettings.cs 의 필드 기본값(= PD 지시 #770 그대로)을 그대로 쓴다. // 이미 에셋이 있으면 값을 덮어쓰지 않고 경로만 보고한다. using System.Text; using UnityEngine; using UnityEditor; public static class WL770_MakeAsset { const string kDir = "Assets/WL/Settings/Resources/WL"; const string kPath = kDir + "/WLTargetingSettings.asset"; public static object Run() { var sb = new StringBuilder(); if (!AssetDatabase.IsValidFolder(kDir)) { sb.AppendLine("folder missing: " + kDir); return sb.ToString(); } var so = AssetDatabase.LoadAssetAtPath(kPath); if (so == null) { so = ScriptableObject.CreateInstance(); AssetDatabase.CreateAsset(so, kPath); sb.AppendLine("created " + kPath); } else sb.AppendLine("exists " + kPath + " (값 유지)"); EditorUtility.SetDirty(so); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); WL.Settings.WLTargetingSettings.ClearCache(); var chk = Resources.Load(WL.Settings.WLTargetingSettings.ResourcesPath); sb.AppendLine("Resources.Load=" + (chk != null ? "ok" : "FAILED")); if (chk != null) sb.AppendLine(" frontConeDeg=" + chk.frontConeDeg + " facingWeight=" + chk.facingWeight + " attackStartRetarget=" + chk.attackStartRetarget + " retargetOnKill=" + chk.retargetOnKill + " pcAggroOnHit=" + chk.pcAggroOnHit + " immediateAttackMargin=" + chk.immediateAttackMargin + " retargetSearchRange=" + chk.retargetSearchRange); return sb.ToString(); } }