コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】BuildOptions.DetailedBuildReport を使うとビルド後にどのシーンがどのアセットを参照しているかわかる

概要

using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;

public static class Example
{
    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        var options = new BuildPlayerOptions
        {
            scenes           = EditorBuildSettings.scenes.Select( x => x.path ).ToArray(),
            locationPathName = "app.apk",
            target           = BuildTarget.Android,
            options          = BuildOptions.DetailedBuildReport
        };

        var buildReport   = BuildPipeline.BuildPlayer( options );
        var stringBuilder = new StringBuilder();

        foreach ( var scenesUsingAssets in buildReport.scenesUsingAssets )
        {
            foreach ( var scenesUsingAsset in scenesUsingAssets.list )
            {
                stringBuilder.Append
                (
                    $@"* {scenesUsingAsset.assetPath}
{string.Join( "\n", scenesUsingAsset.scenePaths.Select( x => $"    * {x}" ) )}
"
                );
            }
        }

        Debug.Log( stringBuilder.ToString() );
    }
}

BuildOptions.DetailedBuildReport を使うと BuildReport の scenesUsingAssets で
どのシーンがどのアセットを参照しているか確認できるようになる

備考

ビルドに含まれるシーンやスクリプトに変更がない状態でビルドした場合は
参照の情報を取得できない?

参考サイト様