public static class WL814q_Probe2 { public static string Run() { var sb = new System.Text.StringBuilder(); string[] paths = { "Assets/WL/Look/Arena/Terrain/WL_ArenaTerrain.asset", "Assets/3DPixelArtEnvironment/Demo/Demo_Terrain.asset" }; foreach (var p in paths) { var td = UnityEditor.AssetDatabase.LoadAssetAtPath(p); if (td == null) { sb.AppendLine(p + " NOT FOUND"); continue; } sb.AppendLine(p + " layers=" + td.terrainLayers.Length + " alphaRes=" + td.alphamapResolution + " alphaTex=" + td.alphamapTextureCount); for (int i = 0; i < td.terrainLayers.Length; i++) sb.AppendLine(" layer[" + i + "] = " + (td.terrainLayers[i] != null ? td.terrainLayers[i].name : "null")); var a = td.GetAlphamaps(0, 0, td.alphamapWidth, td.alphamapHeight); int n = a.GetLength(2); var mx = new float[n]; var sum = new float[n]; for (int y = 0; y < a.GetLength(0); y++) for (int x = 0; x < a.GetLength(1); x++) for (int c = 0; c < n; c++) { if (a[y, x, c] > mx[c]) mx[c] = a[y, x, c]; sum[c] += a[y, x, c]; } for (int c = 0; c < n; c++) sb.AppendLine(string.Format(" ch{0} max={1:F3} mean={2:F3}", c, mx[c], sum[c] / (a.GetLength(0) * a.GetLength(1)))); // 중앙(아레나 안) 샘플 if (p.Contains("Arena")) { int cx = td.alphamapWidth / 2, cy = td.alphamapHeight / 2; sb.AppendLine(string.Format(" center px: ch0={0:F3} ch1={1:F3}", a[cy, cx, 0], a[cy, cx, 1])); } } var m = UnityEditor.AssetDatabase.LoadAssetAtPath( "Assets/3DPixelArtEnvironment/Materials/Terrain.mat"); if (m != null && m.shader != null) { sb.AppendLine("Terrain.mat shader=" + m.shader.name + " props=" + m.shader.GetPropertyCount()); for (int i = 0; i < m.shader.GetPropertyCount(); i++) { string pn = m.shader.GetPropertyName(i); if (pn.Contains("Control") || pn.Contains("Splat") || pn.Contains("Terrain") || pn.Contains("Layer") || pn.Contains("Highlight") || pn.Contains("Shadow")) sb.AppendLine(" " + pn + " : " + m.shader.GetPropertyType(i)); } } // 우리 터레인 GO 상태 var t = UnityEngine.Object.FindFirstObjectByType(); if (t != null) { sb.AppendLine("scene Terrain mat=" + (t.materialTemplate != null ? t.materialTemplate.name : "null") + " shader=" + (t.materialTemplate != null && t.materialTemplate.shader != null ? t.materialTemplate.shader.name : "?") + " drawInstanced=" + t.drawInstanced + " basemapDist=" + t.basemapDistance); } return sb.ToString(); } }