// WL-816f — SO 토글(되돌리기 검증용) public static class WL816f_Ctl { const string kSo = "Assets/WL/Look/Farm/Resources/WL/WLIslandLookSettings.asset"; public static void Off() { Set(0); } public static void On() { Set(1); } static void Set(int en) { var so = UnityEditor.AssetDatabase.LoadAssetAtPath(kSo); so.enabled_ = en; UnityEditor.EditorUtility.SetDirty(so); UnityEditor.AssetDatabase.SaveAssets(); WL.Look.Farm.WLIslandLookSettings.Invalidate(); UnityEngine.Debug.Log("[816f Ctl] enabled_=" + en); } /// Play 중: 되돌리기 상태 실측 + 캡처 public static void Rollback() { var go = UnityEngine.GameObject.Find("~WL816fRb"); if (go != null) UnityEngine.Object.DestroyImmediate(go); go = new UnityEngine.GameObject("~WL816fRb"); go.AddComponent(); } } public class WL816f_RbRunner : UnityEngine.MonoBehaviour { void Start() { StartCoroutine(Co()); } System.Collections.IEnumerator Co() { if (UnityEngine.SceneManagement.SceneManager.sceneCount < 2) { var op = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Level01", UnityEngine.SceneManagement.LoadSceneMode.Additive); while (op != null && !op.isDone) yield return null; } for (int i = 0; i < 6; i++) yield return new UnityEngine.WaitForSeconds(1f); var sb = new System.Text.StringBuilder(); var cfg = WL.Look.Farm.WLIslandLookSettings.Instance; sb.AppendLine("enabled_=" + (cfg == null ? -1 : cfg.enabled_)); sb.AppendLine("머티리얼 교체 " + WL.Look.Farm.WLIslandLook.SwappedRenderers + " · 풀 " + WL.Look.Farm.WLIslandGrass.Instances + " · refLook " + WL.Look.Arena.WLReferenceLook.IsApplied + " · Soil톤 farm " + WL.Look.Farm.WLIslandLook.SoilFarmsToned); sb.AppendLine("ambient " + UnityEngine.RenderSettings.ambientMode + " " + UnityEngine.RenderSettings.ambientLight + " skybox=" + (UnityEngine.RenderSettings.skybox ? UnityEngine.RenderSettings.skybox.name : "없음")); var soils = UnityEngine.Object.FindObjectsByType(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None); string c0 = "-", c1 = "-"; for (int i = 0; i < soils.Length && i < 2; i++) { var r = soils[i].GetComponentInChildren(true); if (r == null) continue; if (i == 0) c0 = UnityEngine.ColorUtility.ToHtmlStringRGB(r.material.color); else c1 = UnityEngine.ColorUtility.ToHtmlStringRGB(r.material.color); } sb.AppendLine("Soil 색 [0]=" + c0 + " [1]=" + c1); var rends = UnityEngine.Object.FindObjectsByType(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None); var shaders = new System.Collections.Generic.Dictionary(); for (int i = 0; i < rends.Length; i++) { if (rends[i].gameObject.scene.name != "Level01") continue; var m = rends[i].sharedMaterial; if (m == null) continue; var k = m.shader.name; shaders[k] = shaders.ContainsKey(k) ? shaders[k] + 1 : 1; } foreach (var kv in shaders) sb.AppendLine("shader " + kv.Key + " ×" + kv.Value); var cams = UnityEngine.Object.FindObjectsByType(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None); UnityEngine.Camera top = null; for (int i = 0; i < cams.Length; i++) { var c = cams[i]; if (!c.enabled || c.targetTexture != null) continue; if (top == null || c.depth > top.depth) top = c; } if (top != null) { System.IO.Directory.CreateDirectory("Screenshots_WL/WL816f"); var rt = new UnityEngine.RenderTexture(1080, 1920, 24, UnityEngine.RenderTextureFormat.ARGB32, UnityEngine.RenderTextureReadWrite.sRGB); rt.Create(); var pt = top.targetTexture; top.targetTexture = rt; top.Render(); UnityEngine.RenderTexture.active = rt; var tex = new UnityEngine.Texture2D(1080, 1920, UnityEngine.TextureFormat.RGB24, false); tex.ReadPixels(new UnityEngine.Rect(0, 0, 1080, 1920), 0, 0); tex.Apply(); System.IO.File.WriteAllBytes("Screenshots_WL/WL816f/z_rollback.png", UnityEngine.ImageConversion.EncodeToPNG(tex)); UnityEngine.RenderTexture.active = null; top.targetTexture = pt; UnityEngine.Object.DestroyImmediate(tex); rt.Release(); UnityEngine.Object.DestroyImmediate(rt); sb.AppendLine("캡처 Screenshots_WL/WL816f/z_rollback.png"); } System.IO.File.WriteAllText("AgentScripts/WL816f_ROLLBACK.txt", sb.ToString()); UnityEngine.Debug.Log("[816f rollback]\n" + sb.ToString()); } }