// WL-816b — 되돌리기(C8) 실측: weaponEnabled_ = 0 이면 무기는 원본 100 % (에디트 모드) using System.IO; using System.Linq; using System.Text; using UnityEditor; using UnityEngine; using WL.Look.Character; public static class WL816bRevert { public static void Run() { var sb = new StringBuilder(); const string SOP = "Assets/WL/Look/Character/Resources/WL/WLCharacterPaletteSettings.asset"; var so = AssetDatabase.LoadAssetAtPath(SOP); WLCharacterPaletteSettings.Invalidate(); int was = so.weaponEnabled_; string[] test = { "Elven_Sword_01", "PP_Theme_10_Shield_003", "Dagger1" }; foreach (int flag in new[] { 0, 1 }) { so.weaponEnabled_ = flag; EditorUtility.SetDirty(so); AssetDatabase.SaveAssets(); WLCharacterPaletteSettings.Invalidate(); sb.AppendLine("weaponEnabled_=" + flag + " · WeaponEnabled=" + WLCharacterPaletteSettings.WeaponEnabled); foreach (var w in test) { var pf = AssetDatabase.LoadAssetAtPath("Assets/Res_Addr/Weapon/" + w + ".prefab"); var go = UnityEngine.Object.Instantiate(pf); go.name = w + "(Clone)"; var mf = go.GetComponentInChildren(true); var rd = go.GetComponentsInChildren(true).First(r => !(r is ParticleSystemRenderer)); var m0 = mf.sharedMesh; var t0 = rd.sharedMaterial; bool applied = WLWeaponPalette.Apply(go.transform); sb.AppendLine(string.Format(" {0,-24} applied={1,-5} mesh {2} → {3} · mat {4} → {5} · {6}", w, applied, m0.name, mf.sharedMesh.name, t0.name, rd.sharedMaterial.name, flag == 0 ? ((mf.sharedMesh == m0 && rd.sharedMaterial == t0) ? "원본 그대로 ✅" : "🔴 바뀜") : ((mf.sharedMesh != m0 && rd.sharedMaterial != t0) ? "팔레트 적용 ✅" : "🔴 미적용"))); UnityEngine.Object.DestroyImmediate(go); } } so.weaponEnabled_ = was; EditorUtility.SetDirty(so); AssetDatabase.SaveAssets(); WLCharacterPaletteSettings.Invalidate(); sb.AppendLine("복구: weaponEnabled_=" + so.weaponEnabled_); // 캐릭터 표가 그대로인지 sb.AppendLine("캐릭터 행 " + (so.rendererNames == null ? 0 : so.rendererNames.Length) + " · enabled_=" + so.enabled_ + " · 무기 행 " + so.weaponNames.Length); File.WriteAllText("AgentScripts/WL816b_REVERT.txt", sb.ToString(), new UTF8Encoding(true)); Debug.Log("[WL816b] revert check done"); } }