방에서 나오고 방 삭제하기

방을 다 썼다면, 예를 들어 싱글 매치 플레이를 마쳤거나 마음을 바꿔 매치에 참여하기로 했다면 방을 떠납니다. 그러면 방이 삭제될 수 있습니다.

방 나가기

StrixNetwork 싱글톤에서 LeaveRoom 메서드를 호출하면 지금 있는 방에서 나갈 수 있습니다.

public void LeaveRoom(RoomLeaveEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)

참고

방을 나간다고 해서 방 서버와 연결이 해제되는 것은 아닙니다. 방 서버에서 연결을 해제하고 싶다면 별도로 해야 합니다. 하지만, 일반적으로 연결 해제 조작은 필요하지 않습니다. 새 방 서버에 연결하려고 하면 기존 서버와 연결이 자동으로 해제되기 때문입니다.

방 삭제하기

방은 미사용 상태가 되면 자동으로 삭제됩니다. "미사용"의 정확한 조건은 방장 양도 서버 옵션에 따라 달라집니다.

  • 방장 양도 기능이 비활성화되면 방은 미사용으로 간주되고, 방장이 방을 떠나면 (방에 다른 멤버가 있어도) 삭제됩니다.

  • 방장 양도 기능이 활성화되면 방은 마지막 멤버가 방을 떠났을 때 미사용으로 간주되어 삭제됩니다.

StrixNetwork 싱글톤에서 DeleteRoom 메서드를 호출하여 수동으로 방을 삭제할 수 있습니다.

void DeleteRoom(long roomId, RoomDeleteEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)

현재 Strix Unity SDK 버전에서는 동시에 복수의 방에 입장할 수 없습니다. 즉 roomId 인수가 현재 들어와 있는 방의 ID와 같아야 한다는 뜻입니다. 이 ID는 다음을 호출하여 받을 수 있습니다.

StrixNetwork.instance.room.GetPrimaryKey();

코드 예시

using SoftGear.Strix.Unity.Runtime;
using UnityEngine;

public class StrixDeleteRoomExample : MonoBehaviour
{
    void Start()
    {
        var strixNetwork = StrixNetwork.instance;

        // 플레이스홀더 값. 이것을 실제 애플리케이션 ID로 변경
        // Strix Cloud 애플리케이션 정보에서 확인 가능: https://www.strixcloud.net/app/applist
        strixNetwork.applicationId = "00000000-0000-0000-0000-000000000000";

        strixNetwork.ConnectMasterServer(
            // 플레이스홀더 값. 이것을 실제 마스터 호스트 이름으로 변경
            // Strix Cloud 애플리케이션 정보에서 확인 가능: https://www.strixcloud.net/app/applist
            host: "000000000000000000000000.game.strixcloud.net",
            connectEventHandler: _ => {
                Debug.Log("Connection established.");

                strixNetwork.CreateRoom(
                    new Dictionary<string, object> {
                        { "name", "My Game Room" },
                        { "capacity", 20 }
                    },
                    playerName: "My Player Name",
                    handler: createRoomResult => {
                        Debug.Log("Room created.");

                        strixNetwork.DeleteRoom(
                            roomId: strixNetwork.room.GetPrimaryKey(),
                            handler: deleteRoomResult => Debug.Log("Room deleted: " + (strixNetwork.room == null)),
                            failureHandler: deleteRoomError => Debug.LogError("Could not delete room. Reason: " + deleteRoomError.cause)
                        );
                    },
                    failureHandler: createRoomError => Debug.LogError("Could not create room. Reason: " + createRoomError.cause)
                );
            },
            errorEventHandler: connectError => Debug.LogError("Connection failed. Reason: " + connectError.cause)
        );
    }
}

참고

applicationId와 host의 플레이스홀더 값은 Strix Cloud 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.