public static class WL814q_Probe { static string V(UnityEngine.Vector3 v) { return string.Format("({0:F3},{1:F3},{2:F3})", v.x, v.y, v.z); } public static string Run() { var sb = new System.Text.StringBuilder(); string[] names = { "Arch_Large", "Arch_Small", "House", "Light_Post", "Slab", "Stone_1", "Stone_2", "Tree", "Water_Plane", "Windmill" }; sb.AppendLine("prefab | worldSize(x,y,z) m @scale1 | center | tris | mats | renderers | colliders"); foreach (var n in names) { string path = "Assets/3DPixelArtEnvironment/Prefabs/" + n + ".prefab"; var go = UnityEditor.AssetDatabase.LoadAssetAtPath(path); if (go == null) { sb.AppendLine(n + " | NOT FOUND"); continue; } var inst = (UnityEngine.GameObject)UnityEditor.PrefabUtility.InstantiatePrefab(go); inst.transform.position = UnityEngine.Vector3.zero; inst.transform.rotation = UnityEngine.Quaternion.identity; var rs = inst.GetComponentsInChildren(true); var b = new UnityEngine.Bounds(inst.transform.position, UnityEngine.Vector3.zero); bool first = true; int tris = 0; var mats = new System.Collections.Generic.HashSet(); foreach (var r in rs) { if (first) { b = r.bounds; first = false; } else b.Encapsulate(r.bounds); foreach (var m in r.sharedMaterials) if (m != null) mats.Add(m.name); var mf = r.GetComponent(); if (mf != null && mf.sharedMesh != null) tris += mf.sharedMesh.triangles.Length / 3; } var cols = inst.GetComponentsInChildren(true); string ctxt = ""; foreach (var c in cols) ctxt += c.GetType().Name + ","; sb.AppendLine(string.Format("{0} | {1} | c={2} | tris={3} | mats={4} | rend={5} | col=[{6}]", n, V(b.size), V(b.center), tris, string.Join("/", System.Linq.Enumerable.ToArray(mats)), rs.Length, ctxt)); UnityEngine.Object.DestroyImmediate(inst); } // Terrain data var td = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/3DPixelArtEnvironment/Demo/Demo_Terrain.asset"); if (td != null) sb.AppendLine(string.Format("TerrainData size={0} heightmapRes={1} layers={2} detailW={3}", V(td.size), td.heightmapResolution, td.terrainLayers.Length, td.detailWidth)); // Character prefab var pc = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Res_Addr/PC/LH_M05.prefab"); if (pc != null) { var pi = (UnityEngine.GameObject)UnityEditor.PrefabUtility.InstantiatePrefab(pc); pi.transform.position = UnityEngine.Vector3.zero; var rs = pi.GetComponentsInChildren(true); var b = new UnityEngine.Bounds(UnityEngine.Vector3.zero, UnityEngine.Vector3.zero); bool f = true; int tris = 0; foreach (var r in rs) { if (f) { b = r.bounds; f = false; } else b.Encapsulate(r.bounds); var smr = r as UnityEngine.SkinnedMeshRenderer; if (smr != null && smr.sharedMesh != null) tris += smr.sharedMesh.triangles.Length / 3; var mf = r.GetComponent(); if (mf != null && mf.sharedMesh != null) tris += mf.sharedMesh.triangles.Length / 3; } sb.AppendLine(string.Format("LH_M05 prefabScale={0} worldSize={1} min.y={2:F4} max.y={3:F4} tris={4} rend={5}", V(pi.transform.localScale), V(b.size), b.min.y, b.max.y, tris, rs.Length)); UnityEngine.Object.DestroyImmediate(pi); } else sb.AppendLine("LH_M05 NOT FOUND"); // Stage table var st = UnityEditor.AssetDatabase.FindAssets("WLStageTable"); foreach (var g in st) sb.AppendLine("StageTable: " + UnityEditor.AssetDatabase.GUIDToAssetPath(g)); var ls = UnityEditor.AssetDatabase.FindAssets("WLLookModeSettings"); foreach (var g in ls) sb.AppendLine("LookModeSettings: " + UnityEditor.AssetDatabase.GUIDToAssetPath(g)); return sb.ToString(); } }