study/first_study/Library/PackageCache/com.unity.ugui@1890c14c96ff/Editor/Analytics/UGUIBuildAnalytics.cs
jh04010421 739d49f1a0 Unity | 2026.01.20
수업 실습 파일
2026-01-20 11:01:57 +09:00

59 lines
2.0 KiB
C#

using System;
using TMPro;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace UnityEditor.UI.Analytics
{
internal class UGUIBuildAnalytics : IPreprocessBuildWithReport, IProcessSceneWithReport, IPostprocessBuildWithReport
{
static UGUIBuildEvent buildEvent;
public int callbackOrder { get; }
public void OnPreprocessBuild (BuildReport report)
{
buildEvent = new UGUIBuildEvent();
}
public void OnPostprocessBuild (BuildReport report)
{
buildEvent.buildGuid = report.summary.guid.ToString();
buildEvent.buildType = report.summary.buildType;
UGUIAnalytics.Send(buildEvent);
}
public void OnProcessScene(Scene scene, BuildReport report)
{
//Not currently used in AssetBundle builds
if (buildEvent == null) { return; }
var gameObjects = scene.GetRootGameObjects();
foreach (var gameObject in gameObjects)
{
var allCanvas = gameObject.GetComponentsInChildren<Canvas>();
foreach (var canvas in allCanvas)
{
if (canvas.renderMode == RenderMode.WorldSpace)
buildEvent.counter.WorldSpaceCanvas++;
else if (canvas.renderMode == RenderMode.ScreenSpaceOverlay)
buildEvent.counter.OverlayCanvas++;
else if (canvas.renderMode == RenderMode.ScreenSpaceCamera)
buildEvent.counter.ScreenSpaceCanvas++;
}
var allUI = gameObject.GetComponentsInChildren<UIBehaviour>();
foreach (var ui in allUI)
{
if (ui is TMP_Text or TMP_Dropdown or TMP_InputField or TMP_SubMeshUI or TMP_SelectionCaret)
buildEvent.counter.TMPElements++;
}
}
}
}
}