Weed.nagoya - 挑戦&物欲プログラマー

HoloLensの出張授業をする会社で、教材を開発しています

シェアリングのセッションから退室するとき、自分が生成したオブジェクトをすべて削除する

HoloLensのシェアリングのセッションから退室するとき、自分が生成したオブジェクトをすべて削除したいときがあります。不完全ではありますが、以下のようにすれば削除することができます。

private void DeleteMyMagnets()
{
    var magnets = GameObject.FindGameObjectsWithTag("Magnet");
    foreach (var magnet in magnets)
    {
        var syncModelAccessor = magnet.GetComponent<DefaultSyncModelAccessor>();
        if (syncModelAccessor != null)
        {
            var syncSpawnObject = (SyncSpawnedObject)syncModelAccessor.SyncModel;
            if(syncSpawnObject.OwnerId ==
                SharingStage.Instance.Manager.GetLocalUser().GetID())
            {
                // 磁石のOnDestroyを走らせる
                Object.DestroyImmediate(magnet);

                spawnManager.Delete(syncSpawnObject);
            }
        }
    }
}

なお、自分のUserIDは以下のように取り出すことができます:

int myUserId = SharingStage.Instance.Manager.GetLocalUser().GetID();

ちなみに、SharingStageにぶら下がっているSyncSpawnedObjectの一覧はUnityのインスペクタで見ることができます。

f:id:weed_7777:20180507114036p:plain