ルームからの退出と削除¶
ルームの使用を終えた場合、例えば対戦を終えたり、気が変わってマッチングを中止したりした場合には、ルームから退出します。それによりルームが削除されることもあります。
ルームから退出する¶
今いるルームから退出するには、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のアプリケーション情報タブにある実際の値に変更してください。