live2D (sdk가 6.5 미지원으로 sprite로 대응)
This commit is contained in:
8
Assets/02_Scripts/_Debug/Editor.meta
Normal file
8
Assets/02_Scripts/_Debug/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca8eab6622f39d94198d452a71b598d4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
57
Assets/02_Scripts/_Debug/Editor/CubismDiagnostics.cs
Normal file
57
Assets/02_Scripts/_Debug/Editor/CubismDiagnostics.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using Live2D.Cubism.Rendering;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
// Live2D 모델이 화면에 안 나올 때 원인을 좁히는 진단.
|
||||
//
|
||||
// URP 렌더 패스(CubismRenderPassFeature.RecordRenderGraph)는 등록된 컨트롤러가 0개면
|
||||
// 아무것도 그리지 않고 그냥 return한다. 그 등록은 CubismRenderController.OnEnable에서
|
||||
// 일어나는데, 그쪽에도 "Fail silently" 주석과 함께 조기 종료 경로가 둘 있다:
|
||||
//
|
||||
// if (!Model) { return; } // ① 모델 없음
|
||||
// if (GetComponent<ICubismRenderingInterceptor>() != null) { return; } // ② 인터셉터 부착
|
||||
//
|
||||
// 즉 등록에 실패해도 콘솔에 아무 흔적이 남지 않아서, 화면이 비어도 원인을 알 수 없다.
|
||||
// 이 진단은 "렌더 패스가 실제로 몇 개를 보고 있는가"를 드러내서
|
||||
// 등록 문제인지(0개) 그리기 문제인지(1개 이상인데 안 보임) 를 가른다.
|
||||
public static class CubismDiagnostics
|
||||
{
|
||||
[MenuItem("Live2D/진단: 렌더 컨트롤러 등록 확인")]
|
||||
private static void Report()
|
||||
{
|
||||
var registered = CubismRenderControllerGroup.GetInstance().RenderControllers;
|
||||
var registeredCount = registered?.Length ?? 0;
|
||||
|
||||
var inScene = Object.FindObjectsByType<CubismRenderController>(
|
||||
FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||
|
||||
Debug.Log($"[Cubism 진단] 렌더 패스가 보는 등록 수: {registeredCount} / 씬의 컨트롤러 수: {inScene.Length}");
|
||||
|
||||
if (inScene.Length == 0)
|
||||
{
|
||||
Debug.LogWarning("[Cubism 진단] 씬에 CubismRenderController가 없다 — 모델이 씬에 없거나 프리팹 모드에서 보고 있다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (registeredCount == 0)
|
||||
{
|
||||
Debug.LogWarning("[Cubism 진단] 컨트롤러는 씬에 있는데 등록이 0개다. " +
|
||||
"이 상태면 렌더 패스가 아무것도 그리지 않는다. " +
|
||||
"아래 목록에서 Model이 '없음'이거나 비활성인 항목을 확인할 것. " +
|
||||
"전부 정상인데 0이면 OnEnable이 아직 안 돈 것이므로 " +
|
||||
"해당 오브젝트를 껐다 켜면 재등록된다.");
|
||||
}
|
||||
|
||||
foreach (var c in inScene)
|
||||
{
|
||||
Debug.Log($" · {c.name}\n" +
|
||||
$" enabled = {c.enabled}, activeInHierarchy = {c.gameObject.activeInHierarchy}\n" +
|
||||
$" Model = {(c.Model != null ? "있음" : "없음 → OnEnable이 ①에서 조용히 종료됨")}\n" +
|
||||
$" IsInitialized = {c.IsInitialized}\n" +
|
||||
$" Opacity = {c.Opacity} (0이면 투명해서 안 보인다)\n" +
|
||||
$" SortingOrder = {c.SortingOrder}\n" +
|
||||
$" Position = {c.transform.position}, Scale = {c.transform.lossyScale}",
|
||||
c);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 56517d896e454c843a164fcccbe18705
|
||||
Reference in New Issue
Block a user