방에서 나오고 방 삭제하기¶
방을 다 썼다면, 예를 들어 싱글 매치 플레이를 마쳤거나 마음을 바꿔 매치에 참여하기로 했다면 방을 떠납니다. 그러면 방이 삭제될 수 있습니다.
방 나가기¶
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 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.