UnityのMirrorのNetworkGameObjectの消し方

シーンが切り替わる際などNetworkGameObjectをそのままにしておくと重複してしまうので消す必要があります。
しかし、そのままDestoryするとエラーになることがあります。

対処法としては1frame以上遅延させてからDestroyするとよいです。
※一定時間遅延させてもよいですが、負荷がかかってupdateのサイクルが遅れた際に同一フレームになってしまう可能性があるので、frame指定のほうが個人的には無難かなと思っています。

protected IEnumerrator DelayNetworkObjectDestroy(GameObject go){
  yield return new WaitForEndOfFrame();// 1frame 待つ
  NetworkServer.Destroy(go);
}

参考
Mirrorの公式Discord

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です