0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Photon FusionのNetworkRunnerはStartGame時に生成したほうがいい

Posted at

概要

NetworkRunner.StartGame() でセッションに入れなかった場合、NetworkRunnerが削除されてしまう仕様みたいなので入室の度に生成する必要があります。

プログラム

以前書いたphoton-fusionに接続のところを以下のように変更することで、必要に応じて生成してStartGameできるようになります。

/* using 省略 */

public class PhotonManager : MonoBehaviour
{
    [SerializeField] private NetworkRunner networkRunner;

    public async UniTask<StartGameResult> StartGame(INetworkRunnerCallbacks networkRunnerCallbacks)
    {
        // ここで準備しておいた処理を登録、ルームに参加すると自動で呼び出されるようになる
        networkRunner.AddCallbacks(networkRunnerCallbacks);
        var startGameArgs = new StartGameArgs
        {
            GameMode = GameMode.Shared,
        };
        return await networkRunner.StartGame(startGameArgs);
    }

    // NetworkRunner.StartGame() でセッションに入れなかった場合、
    // NetworkRunnerが削除されてしまう仕様みたいなので入室の度に生成する
    private NetworkRunner GetOrInstantiateNetworkRunnerIfNeed()
    {
        var runner = FindObjectOfType<NetworkRunner>();
        if (runner == null)
        {
            runner = Instantiate(networkRunnerPrefab);
        }
        return runner;
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?