NOA DebuggerNOA Debugger
  • v1.7.0
  • v1.6.1
  • v1.5.0
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.1
  • v1.0.0
Demo
Contact
Buy
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • v1.7.0
  • v1.6.1
  • v1.5.0
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.1
  • v1.0.0
Demo
Contact
Buy
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • NoaInformationDownloadCallbacks

NoaInformationDownloadCallbacks

Informationのダウンロードに関連するイベントを設定します。

NoaInformationDownloadCallbacksを継承したクラスをNoaInformationに引き渡すことで、ダウンロードに関連するイベントをカスタマイズできます。

オーバーライド可能な要素

Methods

メソッド名説明
OnBeforeConversion(downloadInfo)ダウンロード対象のデータを文字列に変換する前に実行するメソッドです。
引数と返り値はどちらもタブ名とシステム項目のグループリストを保持するIReadOnlyDictionary<InformationTabType, IReadOnlyList<InformationGroup>>です。
値を編集して返した場合はNOA DebuggerのJSON変換処理に反映します。
OnBeforeDownload(info)NoaDownloadCallbacks.OnBeforeDownload(info)を参照してください。
OnAfterDownload(info, status)NoaDownloadCallbacks.OnAfterDownload(info, status)を参照してください。

Properties

プロパティ名説明
IsAllowBaseDownloadNoaDownloadCallbacks.IsAllowBaseDownloadを参照してください。

関連する型

INoaInformationDownloadCallbacks

NoaInformationDownloadCallbacks.OnBeforeConversionは、このインターフェースで定義しています。

カスタムクラスで複数のコールバックの定義を集約したい場合や、既存のカスタムクラスを継承しつつコールバック機能を追加したい場合は、NoaInformationDownloadCallbacksクラスの代わりにこのインターフェースを利用することで実現できます。

InformationGroup

NoaInformationDownloadCallbacksのOnBeforeConversionメソッドで使用する、システム情報のグループを表すクラスです。
読み取り専用のグループ名と、グループ内のプロパティ(キーと値のペア)を保持します。

プロパティ名説明
Name読み取り専用のグループ名です。
KeyValuesシステム項目名と値のペアを保持する読み取り専用のDictionaryです。

InformationTabType

NoaInformationDownloadCallbacksのOnBeforeConversionメソッドで使用する、Informationタブの種類を表す列挙型です。

要素名説明
AppAppタブを表します。
DeviceDeviceタブを表します。
CustomCustomタブを表します。

NoaInformationDownloadInfo

NoaInformationDownloadCallbacksのOnBeforeConversionメソッドで使用する、Informationダウンロード情報を表す構造体です。
InformationTabTypeをキーとし、各タブに含まれるグループのリストを値として保持します。

プロパティ名説明
InformationGroupsタブタイプとInformationGroupのリストのペアを保持する読み取り専用のDictionaryです。

サンプルコード

#if NOA_DEBUGGER
using NoaDebugger;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

// NOA DebuggerのInformationダウンロード処理前後にイベントを実行する場合の例(クラス利用)
public class ExampleInformationDownloader : NoaInformationDownloadCallbacks
{
    public override NoaInformationDownloadInfo OnBeforeConversion(NoaInformationDownloadInfo downloadInfo)
    {
        // "App"タブのグループ件数をログ出力
        if (downloadInfo.InformationGroups.TryGetValue(InformationTabType.App, out var appGroups))
        {
            Debug.Log($"Information download. App group count: {appGroups.Count}");
            foreach (var group in appGroups)
            {
                Debug.Log($"Group: {group.Name}");
                foreach (var kvp in group.KeyValues)
                {
                    Debug.Log($"  {kvp.Key}: {kvp.Value}");
                }
            }
        }
        
        // Customタブをダウンロード対象外にする例
        return new NoaInformationDownloadInfo(
            downloadInfo.InformationGroups.Where(kvp => kvp.Key != InformationTabType.Custom)
        );
    }

    // 継承元のINoaDownloadCallbacksのメソッドも使用可能
    public override NoaDownloadInfo OnBeforeDownload(NoaDownloadInfo info)
    {
        info.FileName = $"Sample-{info.FileName}";
        return info;
    }

    public override void OnAfterDownload(NoaDownloadInfo info, NoaDownloadStatus status)
    {
        Debug.Log($"Download finished with status: {status}");
    }
}

// 複数の機能で共通処理を実装したい場合の例(インターフェース利用)
public class ExampleCommonDownloader : INoaDownloadCallbacks
{
    // IsAllowBaseDownloadをtrueに設定することでNOA Debuggerのダウンロード処理を許可
    public bool IsAllowBaseDownload => true;

    public NoaDownloadInfo OnBeforeDownload(NoaDownloadInfo info)
    {
        Debug.Log($"Download file name: {info.FileName}");
        return info;
    }

    public void OnAfterDownload(NoaDownloadInfo info, NoaDownloadStatus status)
    {
        Debug.Log($"Download finished with status: {status}");
    }
}

public class ExampleDerivedInformationDownloader : ExampleCommonDownloader, INoaInformationDownloadCallbacks
{
    public NoaInformationDownloadInfo OnBeforeConversion(NoaInformationDownloadInfo downloadInfo)
    {
        // 特定のグループ内のプロパティを除外する例
        var modifiedGroups = new Dictionary<InformationTabType, IReadOnlyList<InformationGroup>>();
        
        foreach (var tabKvp in downloadInfo.InformationGroups)
        {
            var modifiedGroupsList = new List<InformationGroup>();
            
            foreach (var group in tabKvp.Value)
            {
                // "Test"を含むキーを除外して新しいDictionaryを作成
                var filteredKeyValues = group.KeyValues
                    .Where(kvp => !kvp.Key.Contains("Test"))
                    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
                
                // 新しいInformationGroupを作成
                var modifiedGroup = new InformationGroup(group.Name, filteredKeyValues);
                modifiedGroupsList.Add(modifiedGroup);
            }
            
            modifiedGroups[tabKvp.Key] = modifiedGroupsList;
        }
        
        return new NoaInformationDownloadInfo(modifiedGroups);
    }
}
#endif

リンク集

関連機能

  • Informationについて
  • データのダウンロードについて

使用クラス

  • NoaInformation

派生元クラス

  • NoaDownloadCallbacks