Project_WL/AgentScripts/WL816f_Ctl.cs

88 lines
4.9 KiB
C#
Raw Normal View History

[WL-816f] 바닥을 데모와 일치 — 잔디 단색 + 풀 대비↓ + 밀도 2.5→1.8 + 밭 칸 표시 톤↓ (#816) PD 「내가 실행할 때는 전혀 풀밭이 아니야 · 바닥이 완전히 같은 느낌이 나도록」 ■ ① PD 실행 경로 실측 = 훅은 실제로 돈다(버그 아님) InGame 활성 + Level01 Additive 재현: 머티리얼 1,575 렌더러 교체 · 풀 생성 · ReferenceLook on · 콘솔 error 0. 「안 나온다」가 아니라 「데모와 전혀 다르게 보인다」였다. 다만 이 경로에서만 생기는 실측 차이 2가지를 찾아 보고에 적었다 (세이브 파일이 활성 씬 이름으로 갈린다 · RenderSettings 가 InGame 소유). ■ ② 바닥 3요소 (같은 화각·같은 거리 캡처로 판정) 체크무늬 : 잔디 타일 텍스처는 단색(#A0E4A2) — 격자 0. 밭(Soil)의 칸 표시는 게임 기능이라 남기고 **색만** 데모 톤으로(soilTint·soilCheckerContrast). 바닥 색 : #AFEDAE → #A0E4A2 (화면색 평균 데모 #94BE81 ↔ 우리 #9AC37E) 풀 색 : 새 복사본 Farm_Grass_Demo.mat (_DiffuseColor #A6E39F · _ShadowDiffuseColor #95CC8F) → 풀이 바닥과 같은 색으로 깔려 「카펫」이 사라진다(에지% 8.09 → 1.96 · 데모 1.79) 밀도 : 2.5 → 1.8 (6.25 → 3.24 개/㎡) 🔴 Assets/FarmingIsland/** 0줄 · Assets/Script/** 0줄 · 3DPixelArtEnvironment 0줄 · ProjectSettings 0줄 · 전역 URP/품질 0. 되돌리기 = enabled_ = 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 05:19:39 +00:00
// 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<WL.Look.Farm.WLIslandLookSettings>(kSo);
so.enabled_ = en;
UnityEditor.EditorUtility.SetDirty(so);
UnityEditor.AssetDatabase.SaveAssets();
WL.Look.Farm.WLIslandLookSettings.Invalidate();
UnityEngine.Debug.Log("[816f Ctl] enabled_=" + en);
}
/// <summary>Play 중: 되돌리기 상태 실측 + 캡처</summary>
public static void Rollback()
{
var go = UnityEngine.GameObject.Find("~WL816fRb");
if (go != null) UnityEngine.Object.DestroyImmediate(go);
go = new UnityEngine.GameObject("~WL816fRb");
go.AddComponent<WL816f_RbRunner>();
}
}
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<CryingSnow.FarmingIsland.Soil>(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None);
string c0 = "-", c1 = "-";
for (int i = 0; i < soils.Length && i < 2; i++)
{
var r = soils[i].GetComponentInChildren<UnityEngine.Renderer>(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.Renderer>(UnityEngine.FindObjectsInactive.Exclude, UnityEngine.FindObjectsSortMode.None);
var shaders = new System.Collections.Generic.Dictionary<string, int>();
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.Camera>(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());
}
}