【Unity】AddressableアセットシステムのEventViewerで参照カウントを可視化する

UnityのAddressableアセットシステムのEventViewerで参照カウントを可視化する方法をまとめました。

Unity2019.2.10
Addressable1.3.8

はじめに

この記事ではAddressableアセットシステムのEventViewerで参照カウントを可視化する方法をまとめました。
Addressableの概念や基礎知識についての説明はこの記事では省略しますが、
以下の記事にまとめていますので、必要に応じて参照してください。

light11.hatenadiary.com

準備

Event Viewerを使うには、設定で有効化する必要があります。
有効化するにはAddressableAssetsData/AddressableAssetSettings.assetから
General > Send Profiler Eventsにチェックを入れます。

f:id:halya_11:20191113121752p:plain

Event Viewerを開く

設定が完了したらEvent Viewerを開きます。
Event ViewerはWindow > Asset Management > Addressables > Event Viewerを選択することで開けます。

f:id:halya_11:20191113122050p:plain

ロード・アンロードして参照カウントを見る

それでは実際に参照カウントを見てみます。
下記のようなスクリプトでGameObjectをAddressable経由でロード・アンロードします。

using UnityEngine;
using UnityEngine.AddressableAssets;
using System.Collections.Generic;
using UnityEngine.ResourceManagement.AsyncOperations;

public class Example : MonoBehaviour
{
    private List<AsyncOperationHandle<GameObject>> _handles = new List<AsyncOperationHandle<GameObject>>();

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A)) {
            _handles.Add(Addressables.LoadAssetAsync<GameObject>("Example"));
        }
        if (Input.GetKeyDown(KeyCode.B)) {
            if (_handles.Count >= 1) {
                var handle = _handles[0];
                Addressables.Release(handle);
                _handles.RemoveAt(0);
            }
        }
    }
}

これを適当なGameObjectにアタッチして再生します。
もしこの時点でEventViewerに何も表示されない場合、ロードをしてからClearボタンを押してみてください。

f:id:halya_11:20191113122827p:plain

今回の例ではResourcesと書かれている部分に参照カウントが表示されています。
リソースを読み込むたびにここが増えていきます。

f:id:halya_11:20191113123027g:plain

リリースするたびに参照カウントが減っていき、最終的にはアンロードされます。

f:id:halya_11:20191113123213g:plain

特定のフレームをクリックすると、その時点での参照カウントの数字を見ることができます。

f:id:halya_11:20191113123050p:plain

関連

light11.hatenadiary.com