본문 바로가기

카테고리 없음

Photon fusion 방 목록 가져오기

코드는 튜토리얼과 거의 같은상태에서 시작했다.

 

https://doc.photonengine.com/ko-kr/fusion/current/tutorials/host-mode-basics/overview

 

Fusion 2 개요 | Photon Engine

Fusion 호스트 모드 기초에 오신 것을 환영합니다. 유니티에서 Fusion SDK를 사용하여 실행할 수 있는 단계별 가이드입니다. 멀티플레이어 게임은 게임 디자인과 개발의 모든 측면에 복잡성을 더해

doc.photonengine.com

 

방 목록을 가져오려면 

 

클래스

public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks

public void OnSessionListUpdated(NetworkRunner runner, List<SessionInfo> sessionList)

이 이벤트가 실행되어야 한다.

 

이 이벤트는 로비안에 접속한 상태에서 발생하기에 로비에 접속해야 한다,

 

이건 방을 로비에 접속시켜서 같은 로비에 있는 플레이어가

가져올수 있게 만드는 방법이다

 

방을 생성할때 CustomLobbyName 인자를 임의로 지정한다.

나는 CustomLobbyName = "Lobby" 라고 설정하였다.

return await _runner.StartGame(new StartGameArgs()
{
    GameMode = mode,
    SessionName =  sessionName,
    Scene = scene,
    SceneManager = gameObject.AddComponent<NetworkSceneManagerDefault>(),
    IsVisible = isPublic,
    CustomLobbyName = "Lobby"
});

 

 

 

 

 

그리고 로비에 등록된 방들의 목록을 가져오려면

플레이어가 로비에 접속해야한다.

 

public async Task JoinLobby(NetworkRunner runner)
{
    Debug.Log("join start");

    var result = await runner.JoinSessionLobby(SessionLobby.Custom, "Lobby");

    Debug.Log("result");

    if (result.Ok)
    {
        Debug.Log("Lobby Join");
    }
    else
    {
        Debug.LogError($"Failed to Start: {result.ShutdownReason}");
    }
}

주의할점이 몇가지 있는데

 

비동기인 이 함수는 에러메세지가 유니티 디버그창에 나오지 않는 모양이다.

NetworkBehaviour 에서 Runner 객체로 인자를 부여하면 Null로 에러 메세지가 나오지 않고

무시될수도 있다..

 

5번째 줄에 "Lobby" 는 접속할 로비 이름으로 

방이 접속한 로비에 이름과 같아야한다.

 

이러면 이벤트가 실행될것이다.