Project_WL/AgentScripts/WL770_MakeAsset.cs

49 lines
2.1 KiB
C#

// 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<WL.Settings.WLTargetingSettings>(kPath);
if (so == null)
{
so = ScriptableObject.CreateInstance<WL.Settings.WLTargetingSettings>();
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>(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();
}
}