NoaUnloadAssetsCallbacks
NOA Debuggerが実行するアセット破棄に関連するイベントを設定します。
NoaUnloadAssetsCallbacksを継承したクラスをNoaProfilerに引き渡すことで、アセット破棄に関連するイベントをカスタマイズできます。
オーバーライド可能な要素
Methods
| メソッド名 | 説明 |
|---|---|
| OnBeforeUnloadAssets() | アセット破棄処理の前に実行するメソッドです。 |
| OnAfterUnloadAssets() | アセット破棄処理の後に実行するメソッドです。 NOA Debuggerのアセット破棄処理を実行しなかった場合でもこのメソッドは実行します。 |
Properties
| プロパティ名 | 説明 |
|---|---|
| IsAllowBaseUnloadAssets | NOA Debuggerのアセット破棄処理を実行するかを判断します。 デフォルトはtrueで、falseに変更した場合はアセット破棄処理を実行しません。 |
関連する型
INoaUnloadAssetsCallbacks
NoaUnloadAssetsCallbacksのオーバーライド可能なメソッドとプロパティは、このインターフェースで定義しています。
カスタムクラスで複数のコールバックの定義を集約したい場合や、既存のカスタムクラスを継承しつつコールバック機能を追加したい場合は、NoaUnloadAssetsCallbacksクラスの代わりにこのインターフェースを利用することで実現できます。
サンプルコード
#if NOA_DEBUGGER
using NoaDebugger;
using System;
using UnityEngine;
// NOA Debuggerのアセット破棄処理前後にイベントを実行する場合の例
public class ExampleAssetUnloader : NoaUnloadAssetsCallbacks
{
// アセット破棄実行前後のメモリ使用量をログ出力する例
public override void OnBeforeUnloadAssets()
{
Debug.Log($"Total allocated memory before Unload Assets: {NoaProfiler.LatestMemoryInfo.CurrentAllocatedMemoryMB} MB");
Debug.Log($"Mono used memory before Unload Assets: {NoaProfiler.LatestMemoryInfo.CurrentMonoUsedSizeMB} MB");
Debug.Log($"Total reserved memory before Unload Assets: {NoaProfiler.LatestMemoryInfo.CurrentReservedMemoryMB} MB");
}
public override void OnAfterUnloadAssets()
{
GC.Collect();
Debug.Log($"Total allocated memory after Unload Assets: {NoaProfiler.LatestMemoryInfo.CurrentAllocatedMemoryMB} MB");
Debug.Log($"Mono used memory after Unload Assets: {NoaProfiler.LatestMemoryInfo.CurrentMonoUsedSizeMB} MB");
Debug.Log($"Total reserved memory after Unload Assets: {NoaProfiler.LatestMemoryInfo.CurrentReservedMemoryMB} MB");
}
}
// 独自のフラグでNOA Debuggerのアセット破棄処理の実行有無を制御する場合の例
public class ExampleOriginalAssetUnloader : NoaUnloadAssetsCallbacks
{
bool isAllowBaseUnloadAssets = true;
public override bool IsAllowBaseUnloadAssets => isAllowBaseUnloadAssets;
// メモリ使用量が一定の閾値を超えた場合のみアセット破棄を実行する例
const float allocatedMemoryThresholdMB = 500.0f;
public override void OnBeforeUnloadAssets()
{
float currentAllocatedMemoryMB = NoaProfiler.LatestMemoryInfo.CurrentAllocatedMemoryMB;
isAllowBaseUnloadAssets = currentAllocatedMemoryMB >= allocatedMemoryThresholdMB;
}
}
#endif
