// WL-814b — Assets/3DPixelCamera/URP.unitypackage 해제(BuiltIn 은 절대 건드리지 않는다). // 게임 코드 아님. run_script 전용. public static class WL814b_Import { const string Pkg = "Assets/3DPixelCamera/URP.unitypackage"; const string Dir = "Assets/3DPixelCamera/URP"; /// 1단계 — 스냅샷을 찍고 비동기 임포트를 시작한다. public static string Run() { if (!System.IO.File.Exists(Pkg)) return "FAIL 패키지 없음: " + Pkg; var sb = new System.Text.StringBuilder(); sb.AppendLine("[WL814b-import] before: URP 폴더 존재=" + System.IO.Directory.Exists(Dir)); UnityEditor.AssetDatabase.ImportPackage(Pkg, false); // false = 대화상자 없이 전부 sb.AppendLine("[WL814b-import] ImportPackage 호출됨(비동기) — 다음 단계에서 Verify"); return sb.ToString(); } /// 2단계 — 생긴 파일 목록·GUID 를 뱉는다. public static string Verify() { UnityEditor.AssetDatabase.Refresh(); var sb = new System.Text.StringBuilder(); if (!System.IO.Directory.Exists(Dir)) { sb.AppendLine("FAIL URP 폴더 없음"); return sb.ToString(); } var files = System.IO.Directory.GetFiles(Dir, "*", System.IO.SearchOption.AllDirectories); System.Array.Sort(files); int n = 0; foreach (var f in files) { var rel = f.Replace('\\', '/'); int i = rel.IndexOf("Assets/"); if (i >= 0) rel = rel.Substring(i); if (rel.EndsWith(".meta")) { sb.AppendLine(" meta " + rel); continue; } n++; var guid = UnityEditor.AssetDatabase.AssetPathToGUID(rel); var t = UnityEditor.AssetDatabase.GetMainAssetTypeAtPath(rel); sb.AppendLine(" ASSET " + rel + " | guid=" + guid + " | type=" + (t == null ? "?" : t.Name) + " | " + new System.IO.FileInfo(f).Length + " B"); } sb.AppendLine("[WL814b-import] 에셋 " + n + "개(+meta) · BuiltIn 해제 0"); // 프리팹 구조 표 var pf = UnityEditor.AssetDatabase.LoadAssetAtPath(Dir + "/PixelCameraSystem.prefab"); if (pf == null) sb.AppendLine("FAIL PixelCameraSystem.prefab 로드 실패"); else { sb.AppendLine("[구조]"); Dump(pf.transform, 0, sb); } return sb.ToString(); } static void Dump(UnityEngine.Transform t, int depth, System.Text.StringBuilder sb) { sb.Append(' ', depth * 2).Append("- ").Append(t.name).Append(" layer=").Append(t.gameObject.layer); var comps = t.GetComponents(); sb.Append(" ["); for (int i = 0; i < comps.Length; i++) { if (comps[i] == null) { sb.Append(" "); continue; } sb.Append(comps[i].GetType().Name).Append(' '); } sb.Append("]"); var cam = t.GetComponent(); if (cam != null) sb.Append(" cam(ortho=").Append(cam.orthographic ? 1 : 0).Append(" size=").Append(cam.orthographicSize) .Append(" depth=").Append(cam.depth).Append(" mask=").Append(cam.cullingMask) .Append(" clear=").Append((int)cam.clearFlags).Append(" near=").Append(cam.nearClipPlane) .Append(" far=").Append(cam.farClipPlane).Append(")"); var ucd = t.GetComponent(); if (ucd != null) sb.Append(" urp(type=").Append(ucd.renderType).Append(" post=").Append(ucd.renderPostProcessing ? 1 : 0).Append(")"); var mr = t.GetComponent(); if (mr != null) sb.Append(" mat=").Append(mr.sharedMaterial == null ? "null" : mr.sharedMaterial.name); var lp = t.localPosition; var ls = t.localScale; sb.Append(" lp=(").Append(lp.x.ToString("0.####")).Append(',').Append(lp.y.ToString("0.####")).Append(',').Append(lp.z.ToString("0.####")).Append(')'); sb.Append(" ls=(").Append(ls.x.ToString("0.####")).Append(',').Append(ls.y.ToString("0.####")).Append(',').Append(ls.z.ToString("0.####")).Append(')'); sb.AppendLine(); for (int i = 0; i < t.childCount; i++) Dump(t.GetChild(i), depth + 1, sb); } }