114 lines
6.3 KiB
C#
114 lines
6.3 KiB
C#
|
|
// WL-816f — ① PD 실행 경로(로그인 → Load_Map(900) → Level01 Additive) 구조 실측
|
||
|
|
// 에디트 모드 전용. InGame 씬이 섬 위에 무엇을 얹는지(조명·Volume·카메라)를 본다.
|
||
|
|
public static class WL816f_Probe
|
||
|
|
{
|
||
|
|
public static void Run()
|
||
|
|
{
|
||
|
|
var sb = new System.Text.StringBuilder();
|
||
|
|
|
||
|
|
// 1) InGame 씬(= PD 경로의 활성 씬)을 연다
|
||
|
|
var sc = UnityEditor.SceneManagement.EditorSceneManager.OpenScene(
|
||
|
|
"Assets/Scenes/InGame.unity", UnityEditor.SceneManagement.OpenSceneMode.Single);
|
||
|
|
sb.AppendLine("=== InGame.unity (PD 경로의 ACTIVE 씬) ===");
|
||
|
|
Dump(sb, sc);
|
||
|
|
|
||
|
|
// 2) Level01 을 Additive 로 얹는다 (= Load_Map(900) 과 같은 구조)
|
||
|
|
var sc2 = UnityEditor.SceneManagement.EditorSceneManager.OpenScene(
|
||
|
|
"Assets/FarmingIsland/Scenes/Level01.unity", UnityEditor.SceneManagement.OpenSceneMode.Additive);
|
||
|
|
sb.AppendLine();
|
||
|
|
sb.AppendLine("=== Level01.unity (Additive) ===");
|
||
|
|
Dump(sb, sc2);
|
||
|
|
|
||
|
|
sb.AppendLine();
|
||
|
|
sb.AppendLine("active scene = " + UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||
|
|
sb.AppendLine("RenderSettings(활성 씬 기준) ambient=" + UnityEngine.RenderSettings.ambientMode
|
||
|
|
+ " light=" + UnityEngine.RenderSettings.ambientLight
|
||
|
|
+ " sky=" + UnityEngine.RenderSettings.ambientSkyColor
|
||
|
|
+ " skyboxMat=" + (UnityEngine.RenderSettings.skybox ? UnityEngine.RenderSettings.skybox.name : "없음")
|
||
|
|
+ " fog=" + UnityEngine.RenderSettings.fog);
|
||
|
|
|
||
|
|
// 3) 레이어 이름 확인 (풀은 Default 레이어에 그려진다)
|
||
|
|
sb.AppendLine("layer Default=" + UnityEngine.LayerMask.NameToLayer("Default"));
|
||
|
|
for (int i = 0; i < 32; i++)
|
||
|
|
{
|
||
|
|
string n = UnityEngine.LayerMask.LayerToName(i);
|
||
|
|
if (!string.IsNullOrEmpty(n)) sb.Append(i + ":" + n + " ");
|
||
|
|
}
|
||
|
|
sb.AppendLine();
|
||
|
|
|
||
|
|
System.IO.File.WriteAllText("AgentScripts/WL816f_PROBE.txt", sb.ToString());
|
||
|
|
UnityEngine.Debug.Log(sb.ToString());
|
||
|
|
}
|
||
|
|
|
||
|
|
static void Dump(System.Text.StringBuilder sb, UnityEngine.SceneManagement.Scene sc)
|
||
|
|
{
|
||
|
|
var roots = sc.GetRootGameObjects();
|
||
|
|
sb.AppendLine("roots=" + roots.Length);
|
||
|
|
for (int i = 0; i < roots.Length; i++) sb.Append(roots[i].name + (roots[i].activeSelf ? "" : "(off)") + " · ");
|
||
|
|
sb.AppendLine();
|
||
|
|
|
||
|
|
// 카메라
|
||
|
|
foreach (var r in roots)
|
||
|
|
foreach (var c in r.GetComponentsInChildren<UnityEngine.Camera>(true))
|
||
|
|
sb.AppendLine(" CAM " + Path(c.transform) + " active=" + c.gameObject.activeInHierarchy + "/" + c.enabled
|
||
|
|
+ " depth=" + c.depth + " mask=0x" + c.cullingMask.ToString("X")
|
||
|
|
+ " clear=" + c.clearFlags + " ortho=" + c.orthographic + " fov=" + c.fieldOfView
|
||
|
|
+ " far=" + c.farClipPlane
|
||
|
|
+ " urp=" + (c.GetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>() != null
|
||
|
|
? ("post=" + c.GetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>().renderPostProcessing
|
||
|
|
+ " volMask=0x" + c.GetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>().volumeLayerMask.value.ToString("X")
|
||
|
|
+ " type=" + c.GetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>().renderType)
|
||
|
|
: "없음"));
|
||
|
|
|
||
|
|
// 라이트
|
||
|
|
foreach (var r in roots)
|
||
|
|
foreach (var l in r.GetComponentsInChildren<UnityEngine.Light>(true))
|
||
|
|
sb.AppendLine(" LIGHT " + Path(l.transform) + " active=" + l.gameObject.activeInHierarchy + "/" + l.enabled
|
||
|
|
+ " " + l.type + " col=" + l.color + " I=" + l.intensity + " sh=" + l.shadows
|
||
|
|
+ " rot=" + l.transform.eulerAngles);
|
||
|
|
|
||
|
|
// Volume (포스트)
|
||
|
|
foreach (var r in roots)
|
||
|
|
foreach (var v in r.GetComponentsInChildren<UnityEngine.Rendering.Volume>(true))
|
||
|
|
sb.AppendLine(" VOL " + Path(v.transform) + " active=" + v.gameObject.activeInHierarchy + "/" + v.enabled
|
||
|
|
+ " global=" + v.isGlobal + " prio=" + v.priority + " weight=" + v.weight
|
||
|
|
+ " profile=" + (v.sharedProfile ? v.sharedProfile.name + " [" + Comps(v.sharedProfile) + "]" : "없음")
|
||
|
|
+ " layer=" + v.gameObject.layer);
|
||
|
|
|
||
|
|
// RenderSettings 는 씬별이다 — 씬을 활성으로 만들고 읽는다
|
||
|
|
var prev = UnityEngine.SceneManagement.SceneManager.GetActiveScene();
|
||
|
|
UnityEngine.SceneManagement.SceneManager.SetActiveScene(sc);
|
||
|
|
sb.AppendLine(" RS ambient=" + UnityEngine.RenderSettings.ambientMode
|
||
|
|
+ " light=" + UnityEngine.RenderSettings.ambientLight + " sky=" + UnityEngine.RenderSettings.ambientSkyColor
|
||
|
|
+ " I=" + UnityEngine.RenderSettings.ambientIntensity
|
||
|
|
+ " skyboxMat=" + (UnityEngine.RenderSettings.skybox ? UnityEngine.RenderSettings.skybox.name : "없음")
|
||
|
|
+ " fog=" + UnityEngine.RenderSettings.fog + " sun=" + (UnityEngine.RenderSettings.sun ? UnityEngine.RenderSettings.sun.name : "없음"));
|
||
|
|
if (prev.IsValid() && prev != sc) UnityEngine.SceneManagement.SceneManager.SetActiveScene(prev);
|
||
|
|
|
||
|
|
// MapData / GlobalVolumeMgr / CheckShadow 같은 룩 관여 컴포넌트
|
||
|
|
foreach (var r in roots)
|
||
|
|
foreach (var m in r.GetComponentsInChildren<UnityEngine.MonoBehaviour>(true))
|
||
|
|
{
|
||
|
|
if (m == null) continue;
|
||
|
|
string t = m.GetType().Name;
|
||
|
|
if (t == "MapData" || t == "GlobalVolumeMgr" || t == "CheckShadow" || t == "SetSkybox"
|
||
|
|
|| t == "GraphicsManager" || t == "UniversalRenderPipelineAsset")
|
||
|
|
sb.AppendLine(" COMP " + t + " @ " + Path(m.transform) + " active=" + m.gameObject.activeInHierarchy + "/" + m.enabled);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static string Comps(UnityEngine.Rendering.VolumeProfile p)
|
||
|
|
{
|
||
|
|
var s = "";
|
||
|
|
for (int i = 0; i < p.components.Count; i++) s += p.components[i].GetType().Name + (p.components[i].active ? "" : "(off)") + ",";
|
||
|
|
return s;
|
||
|
|
}
|
||
|
|
|
||
|
|
static string Path(UnityEngine.Transform t)
|
||
|
|
{
|
||
|
|
string s = t.name;
|
||
|
|
while (t.parent != null) { t = t.parent; s = t.name + "/" + s; }
|
||
|
|
return s;
|
||
|
|
}
|
||
|
|
}
|