MUN 専用の UnityEditor カスタムメニュー

目次

  概要
  MUNで利用する.assetの生成
  MUNで利用する MonobitServerSettings.asset のフォーカス
  MUNの内部処理で利用する一時的なオブジェクトのクリア
  MUNで使用するプラグインの対応プラットフォーム設定


概要

MUNパッケージを導入することで利用可能なカスタムメニューについて

  このページでは、MUNパッケージを導入することで UnityEditor に追加される、MUN 専用のカスタムメニューについて説明します。


MUNで利用する.assetの生成
  [Assets] > [Create] > [MonobitServerSettings]

MUNサーバに接続するために必要な「サーバ設定」と「App認証ID」の .asset を生成する

  MUNサーバに接続する場合には、MonobitServerSettings.asset および MonobitAuthenticationCode.asset が必要になりますが、
  この2つのファイルについて新規作成するためのカスタムメニューです。

  UnityEditor 上で [Assets] > [Create] > [MonobitServerSettings] を選択することで、
  上記2つの .asset が、Assets/Monobit Unity Networking/Resources ディレクトリに作成されます。


MUNで利用する MonobitServerSettings.asset のフォーカス
  [Windows] > [Monobit Unity Settings] > [Pick Up Settings]

MonobitServerSettings.asset の場所を Project ビューに表示する

  MonobitServerSettings.asset を格納されているディレクトリ、すなわち
  Assets/Monobit Unity Networking/Resources ディレクトリを Project ビューに表示するためのカスタムメニューです。

  UnityEditor 上で [Windows] > [Monobit Unity Settings] > [Pick Up Settings] を選択することで、
  Assets/Monobit Unity Networking/Resources ディレクトリが開き、その中の MonobitServerSettings.asset がフォーカスされます。

  選択すると以下のように Project ビュー内でフォーカスされます。


MUNの内部処理で利用する一時的なオブジェクトのクリア
  [Windows] > [Monobit Unity Settings] > [Cleanup MUN internal HideInHierarchy object]

MUNの内部処理で一時的に利用している隠しオブジェクトを、シーンファイルからクリーンアップする

  MUNでは、「サーバに接続し通信する」ために必要となる各種スクリプトについて、
  シーン上に一時的なオブジェクト/コンポーネントを生成し、そこに通信用スクリプトを登録してサーバとの送受信を可能にしています。

  この「一時的なオブジェクト」は、MonobitNetwork.ConnectServer() メソッド実行時に生成され、
  アプリケーション終了時には消去されるように組み込まれていますが、開発者の利用方法によっては、一時的なオブジェクトがそのままシーンファイルに残留してしまう場合があります。
  そのケースについて頻度の高い事例を挙げると、以下のような場合に起こります。
・旧バージョンのMUNコンポーネントを Inspector に表示した状態で、MUNクライアントパッケージのアップデートを実行する
・MUNコンポーネントのInspectorの処理中、何らかのイレギュラーな操作を行ない、Inspector 制御が途中で中断(クラッシュ)する  など。
  このとき、一時オブジェクトがシーンに残留したままシーンセーブすると、その後 MUN サーバとの接続ができなくなります
  加えて、一時オブジェクトには無闇に実行中に生成・削除できないように HideInHierarchy 属性を付けているため、
  シーン上に残留した一時オブジェクトを削除するのは少々困難です。

  そのため、このような事態に陥っている場合、その一時オブジェクトの存在をチェックし、該当するものが存在する場合クリーンアップする機能を
  カスタムメニューとして用意しています。

  UnityEditor 上で [Windows] > [Monobit Unity Settings] > [Cleanup MUN internal HideInHierarchy object] を選択することで、
  シーン内に残留している一時オブジェクトを消去することができます。

  仮に何らかの理由により、シーン内に一時オブジェクトが残留している場合、メニュー選択後に一時オブジェクトの消去が実行され、
  消去完了後、UnityEditor のコンソール上に以下のメッセージが表示されます。
Destroyed MUN Internal objects. count=(消去された一時オブジェクトの数)
  これでクリーンアップが完了しますので、一旦シーンを上書き保存した後で、再度接続しなおしてください。

  また、仮にシーン内に一時オブジェクトが残留していない場合、メニュー選択後に以下のメッセージが表示されます。
Nothing MUN Internal objects.
  この場合には一時オブジェクト関連の不具合は、そのシーンには特に発生しないことを意味します。


MUN で使用するプラグインの対応プラットフォーム設定
  [Windows] > [Monobit Unity Settings] > [Reimport Redistribution Library]

MUNで提供しているプラグインについて、利用している UnityEditor に合わせて設定する

  MUNで提供しているプラグイン(Assets/Plugins 内に含まれるデータ)は、
  Unityがサポートしている各種プラットフォームごとに、同機能を持つライブラリが複数同梱されています。

  このライブラリについて、開発で使用する UnityEditor のバージョンによって機能が制限されるものがいくつかあります。
  大まかに説明すると
・Unityが「64bit版Android」の対応を始めたのは 2017.4 から。
  → MUN でもサポートしているが、このライブラリについて、Unity2017.4 未満のバージョンで開発する場合、
    64bit版Android向けライブラリの使用を停止している。

・Unityが「Hololens2」の対応を始めたのは 2018.4 から。
  → MUN でもサポートしているが、このライブラリについて、Unity2018.4 未満のバージョンで開発する場合、
    64bit版UWP(Hololens2を含む)向けライブラリの使用を停止している。
  など、細かな点で言えば Unity のメジャー/マイナーなアップデートのたびにライブラリの使用の許可/停止を行なっています。

  しかしこの機能が働くのは、通常「UnityEditorにImport/Reimportされた最初の1回」のみで、
  UnityEditorのバージョンを任意に切り替えてプロジェクトを開く場合、プラグインの対応プラットフォーム設定が正常に行われない場合があります。

  そのため、このような事態に陥っている場合、プラグインの対応プラットフォームを再設定する機能としてカスタムメニューを用意しています。

  UnityEditor 上で [Windows] > [Monobit Unity Settings] > [Reimport Redistribution Library] を選択することで、
  MUNで使用するプラグインについて、開発で使用している UnityEditor のバージョンに合わせて再設定することができます。