Schnellstart: PlayFab Multiplayer Unity-Plug-In
Erste Schritte mit dem PlayFab Multiplayer Unity-Plug-In. Führen Sie die folgenden Schritte aus, um das Paket zu installieren und Beispielcode für eine einfache Aufgabe auszuprobieren.
In dieser Schnellstartanleitung können Sie ihre ersten API-Aufrufe mithilfe des PlayFab Multiplayer SDK für Unity ausführen. Bevor Sie fortfahren, stellen Sie sicher, dass Sie Schnellstart: PlayFab-Clientbibliothek für C# in Unity abschließen. Dadurch wird sichergestellt, dass Sie über ein PlayFab-Konto verfügen und mit der Anmeldung bei PlayFab über Ihr Spiel und den PlayFab Game Manager vertraut sind.
Notiz
Wenn Sie dieses Plug-In verwenden möchten, um Spiele zu entwickeln, die auf dem Microsoft Game Development Kit (GDK) basieren, müssen Sie das GDK separat erwerben und installieren. Weitere Informationen finden Sie unter Unity-Add-On für Game Core auf Xbox-Konsolen.
Voraussetzungen
Eine installierte Kopie des Unity-Editors. Informationen zum Installieren von Unity für den persönlichen Gebrauch über Unity Hub oder Unity+ für die professionelle Verwendung finden Sie unter Herunterladen von Unity. Überprüfen Sie bei Bedarf den Unity-Support in der Dokumentation Ihrer spezifischen Plattform. Die unterstützte Unity-Mindestversion ist Unity 2017 LTS.
Ein Unity-Projekt – dies kann eine der folgenden Sein:
- Ein brandneues Projekt: Weitere Informationen finden Sie unter Erstmaliges Starten von Unity.
- Ein geführtes Tutorialprojekt. Weitere Informationen finden Sie unter Erste Schritte mit Unity.
- Ein vorhandenes Projekt.
Das PlayFab-"Core"-Unity3D-SDK (auch im Multiplayer-Unity-Plug-In enthalten). Informationen zum Installieren des Unity3D SDK finden Sie im Abschnitt "Herunterladen und Installieren des PlayFab SDK" unter Schnellstart: PlayFab-Clientbibliothek für C# in Unity.
Herunterladen und Installieren des PlayFab Multiplayer Unity-Plug-Ins
Führen Sie die Schritte zum Herunterladen und Installieren des PlayFab Multiplayer Unity-Plug-Ins aus.
- Laden Sie das PlayFab Multiplayer Unity-Plug-In-Asset-Paket herunter (verwenden Sie je nach Plattform einen Verteilungspunkt).
- Wichtig! Informationen finden Sie in der README-Datei, die mit dem Plug-In veröffentlicht wurde. Es ist auf jede bestimmte Version zugeschnitten und kann wichtige Anweisungen für Ihre Plattform enthalten.
- Öffnen Sie Ihr Unity-Projekt.
- Navigieren Sie zu dem Speicherort, an dem Sie das UNITY-Paket gespeichert haben, und doppelklicken Sie darauf, um das Importdialogfeld zu öffnen.
- Wählen Sie Importieren aus, um das PlayFab Multiplayer Unity-Plug-In in Ihr Projekt zu importieren.
Hinweis: Möglicherweise müssen Sie ggf. eine neuere Version des PlayFab Core Unity SDK installieren.
Einrichten ihrer Szene
In diesem Teil des Leitfadens erfahren Sie, wie Sie Ihrer Szene hinzufügen PlayfabMultiplayerEventProcessor
, damit Sie PlayFab Multiplayer-APIs aus Unity aufrufen können.
Bevor Sie die Multiplayer-API verwenden können, muss ein PlayFab-Spieler angemeldet sein. Informationen zum Anmelden in einem Player finden Sie unter Durchführen Ihres ersten API-Aufrufs unter Schnellstart: PlayFab-Clientbibliothek für C# in Unity.
Navigieren Sie im Unity-Editor im Fenster Projekt zu Assets > PlayFabMultiplayerSDK > Prefabs.
Ziehen Sie aus dem Ordner Prefabs den PlayfabMultiplayerEventProcessor in Ihre Szene im Hierarchiefenster , und legen Sie ihn ab.
Erstellen Sie in Ihrer Szene ein leeres Spielobjekt mit dem Namen "HelloMultiplayerLogic".
Wählen Sie das HelloMultiplayerLogic-Spielobjekt aus, um den Inspektor zu öffnen.
Wählen Sie Komponente hinzufügen aus.
Geben Sie "HelloMultiplayerLogic" ein, und drücken Sie die EINGABETASTE, um das neue Skriptmenü anzuzeigen.
Drücken Sie erneut die EINGABETASTE, um das neue Skript zu erstellen, HelloMultiplayerLogic.cs.
Suchen Sie das Skript im Projektfenster , und doppelklicken Sie darauf, um das Skript zu bearbeiten.
Fügen Sie ihrem Skript die folgende using-Anweisung hinzu:
using PlayFab; using PlayFab.Multiplayer; using PlayFab.ClientModels;
Fügen Sie den folgenden Code in der Start-Methode hinzu, um sich bei PlayFab anzumelden.
// Log into playfab var request = new LoginWithCustomIDRequest { CustomId = UnityEngine.Random.value.ToString(), CreateAccount = true }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
Fügen Sie der -Klasse die folgenden Methoden hinzu.
private void OnLoginSuccess(LoginResult result) { } private void OnLoginFailure(PlayFabError error) { }
Notiz
Möglicherweise erhalten Sie die folgenden Fehler:
Error CS0227 Unsafe code may only appear if compiling with /unsafe
The plugin requires unsafe code because it interops with a native DLL.
Mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "XGamingRuntime", "AMD64".
Microsoft GDK und Windows unterstützen nur x64.
So beheben Sie diese Probleme:
- Wählen Sie im Unity-Editor Dateibuildeinstellungen > aus.
- Wählen Sie Ihre Plattform aus. Wählen Sie dann in der Dropdownliste Architektur entweder x86_64 oder x64 aus.
- Wählen Sie Spielereinstellungen aus.
- Wählen Sie im rechten Bereich Andere Einstellung aus.
- Suchen Sie die Einstellung Unsicheren Code zulassen , und wählen Sie sie aus.
- Schließen Sie die Fenster Buildeinstellungen und Projekteinstellungen .
Erstellen und Beitreten zu einem Wartebereich
In diesem Teil des Leitfadens erfahren Sie, wie Sie einen Wartebereich erstellen und beitreten.
Öffnen Sie das HelloMultiplayerLogic.cs-Skript. Fügen Sie in der
OnLoginSuccess
-Methode den folgenden Code hinzu, um einen Wartebereich zu erstellen und diesem beizutreten:string entityId = ...; // PlayFab user's entity Id string entityType = ...; // PlayFab user's entity type PlayFabMultiplayer.OnLobbyCreateAndJoinCompleted += this.PlayFabMultiplayer_OnLobbyCreateAndJoinCompleted; PlayFabMultiplayer.OnLobbyDisconnected += this.PlayFabMultiplayer_OnLobbyDisconnected; var createConfig = new LobbyCreateConfiguration() { MaxMemberCount = 10, OwnerMigrationPolicy = LobbyOwnerMigrationPolicy.Automatic, AccessPolicy = LobbyAccessPolicy.Public }; createConfig.LobbyProperties["Prop1"] = "Value1"; createConfig.LobbyProperties["Prop2"] = "Value2"; var joinConfig = new LobbyJoinConfiguration(); joinConfig.MemberProperties["MemberProp1"] = "MemberValue1"; joinConfig.MemberProperties["MemberProp2"] = "MemberValue2"; PlayFabMultiplayer.CreateAndJoinLobby( new PFEntityKey( entityId, entityType), createConfig, joinConfig);
Um den OnLobbyCreateAndJoinCompleted-Ereignishandler zu definieren, fügen Sie der Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnLobbyCreateAndJoinCompleted(Lobby lobby, int result) { if (LobbyError.SUCCEEDED(result)) { // Lobby was successfully created Debug.Log(lobby.ConnectionString); } else { // Error creating a lobby Debug.Log("Error creating a lobby"); } }
Um den OnLobbyDisconnected-Ereignishandler zu definieren, fügen Sie der -Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnLobbyDisconnected(Lobby lobby) { // Disconnected from lobby Debug.Log("Disconnected from lobby!"); }
Speichern Sie, und wählen Sie im Unity-Editor wiedergeben aus. Der Wartebereich Verbindungszeichenfolge im Konsolenfenster angezeigt.
Treten Sie einer Lobby bei
In diesem Teil des Leitfadens erfahren Sie, wie Sie einem vorhandenen Wartebereich beitreten, den ein anderer Client erstellt hat.
Öffnen Sie das HelloMultiplayerLogic.cs-Skript. Fügen Sie in der OnLoginSuccess-Methode den folgenden Code zu Join a lobby hinzu:
PFEntityKey entityKey = ...; // PlayFab user's entity key string connectionString = "<your lobby connection string>"; PlayFabMultiplayer.JoinLobby( entityKey, connectionString, null);
Um ein Ereignis zu definieren, das ausgelöst wird, wenn Ihr lokaler Client dem Wartebereich beitritt, fügen Sie der -Methode den
OnLoginSuccess
folgenden Code hinzu:PlayFabMultiplayer.OnLobbyJoinCompleted += this.PlayFabMultiplayer_OnLobbyJoinCompleted;
Um den OnLobbyJoinCompleted-Ereignishandler zu definieren, fügen Sie der -Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnLobbyJoinCompleted(Lobby lobby, PFEntityKey newMember, int reason) { if (LobbyError.SUCCEEDED(reason)) { // Successfully joined a lobby Debug.Log("Joined a lobby"); } else { // Error joining a lobby Debug.Log("Error joining a lobby"); } }
Speichern Sie, und wählen Sie im Unity-Editor wiedergeben aus. Die Zeichenfolge "Join a lobby" wird im Konsolenfenster angezeigt.
Suchen von Lobbies
In diesem Teil des Leitfadens erfahren Sie, wie Sie vorhandene Lobbies finden, die von anderen Clients erstellt wurden.
Öffnen Sie das HelloMultiplayerLogic.cs-Skript. Fügen Sie in der OnLoginSuccess-Methode den folgenden Code hinzu, um Lobbies zu finden:
PFEntityKey entityKey = ...; // PlayFab user's entity key LobbySearchConfiguration config = new LobbySearchConfiguration(); PlayFabMultiplayer.FindLobbies(entityKey, config);
Um ein Ereignis zu definieren, das ausgelöst wird, wenn Ihr lokaler Client Lobbies findet, fügen Sie der -Methode den
OnLoginSuccess
folgenden Code hinzu:PlayFabMultiplayer.OnLobbyFindLobbiesCompleted += this.PlayFabMultiplayer_OnLobbyFindLobbiesCompleted;
Um den OnLobbyFindLobbiesCompleted-Ereignishandler zu definieren, fügen Sie der Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnLobbyFindLobbiesCompleted( IList<LobbySearchResult> searchResults, PFEntityKey newMember, int reason) { if (LobbyError.SUCCEEDED(reason)) { // Successfully found lobbies Debug.Log("Found lobbies"); // Iterate through lobby search results foreach (LobbySearchResult result in searchResults) { // Examine a search result } } else { // Error finding lobbies Debug.Log("Error finding lobbies"); } }
Speichern Sie, und wählen Sie im Unity-Editor wiedergeben aus. Die Zeichenfolge "Gefundene Lobbies" wird im Konsolenfenster angezeigt.
Erstellen eines Matchmaking-Tickets
In diesem Teil des Leitfadens erfahren Sie, wie Sie ein Matchmaking-Ticket erstellen. Führen Sie es mit dem Szenario "An einem Matchmaking-Ticket teilnehmen" auf einem anderen Client aus.
Öffnen Sie das HelloMultiplayerLogic.cs-Skript. Fügen Sie in der
OnLoginSuccess
-Methode den folgenden Code hinzu, um ein Matchmaking-Ticket zu erstellen:PFEntityKey entityKey = ...; // PlayFab user's entity key PFEntityKey remoteEntityKey = ...; // another PlayFab user's entity key string remoteUserAttributesJson = ...; // JSON string with another PlayFab user's attributes for matchmaking PlayFabMultiplayer.OnMatchmakingTicketStatusChanged += PlayFabMultiplayer_OnMatchmakingTicketStatusChanged; List<MatchUser> localUsers = new List<MatchUser>(); localUsers.Add(new MatchUser(entityKey, remoteUserAttributesJson)); List<PFEntityKey> membersToMatchWith = new List<PFEntityKey>(); membersToMatchWith.Add(remoteEntityKey); PlayFabMultiplayer.CreateMatchmakingTicket( localUsers, "QuickMatchQueueName", membersToMatchWith);
Um den OnMatchmakingTicketStatusChanged-Ereignishandler zu definieren, fügen Sie der -Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnMatchmakingTicketStatusChanged(MatchmakingTicket ticket) { // Store and print matchmaking ticket Debug.Log(ticket.TicketId); // Examine matchmaking ticket status Debub.Log(ticket.Status) // Share matchmaking ticket with other clients taking part in matchmaking // Examine ticket }
Speichern Sie, und wählen Sie im Unity-Editor wiedergeben aus.
Wenn membersToMatchWith angegeben ist, wird ein OnMatchmakingTicketStatusChanged-Ereignishandler ausgelöst, und der Status lautet WaitingForPlayers. Sobald ein anderer Client JoinMatchmakingTicketFromId aufruft, wird ein neuer OnMatchmakingTicketStatusChanged-Ereignishandler ausgelöst, und der status dieses Mal WaitingForMatch.
Alternativ wird ein OnMatchmakingTicketStatusChanged-Ereignishandler ausgelöst, und der status ist WaitingForMatch.
Teilnehmen an einem Matchmaking-Ticket
In diesem Teil des Leitfadens erfahren Sie, wie Sie einem vorhandenen Matchmaking-Ticket beitreten, das von einem anderen Client erstellt wurde. Führen Sie es mit dem Szenario "Erstellen eines Matchmaking-Tickets" auf einem anderen Client aus.
Öffnen Sie das HelloMultiplayerLogic.cs-Skript. Fügen Sie in der OnLoginSuccess-Methode den folgenden Code hinzu, um einem Matchmaking-Ticket beizutreten:
PFEntityKey entityKey = ...; // PlayFab user's entity key string ticketId = ...; // Matchmaking ticket obtained from the client that created the ticket PlayFabMultiplayer.OnMatchmakingTicketCompleted += PlayFabMultiplayer_OnMatchmakingTicketStatusChanged; // Create JSON string with PlayFab user's attributes for matchmaking. This will need to be shared with other clients taking part in matchmaking string uniqueId = System.Guid.NewGuid().ToString(); string userAttributesJson = "{\"MatchIdentifier\": \"" + uniqueId + "\"}"; PlayFabMultiplayer.JoinMatchmakingTicketFromId( new MatchUser(entityKey, userAttributesJson), ticketId, "QuickMatchQueueName", new List<PFEntityKey>());
Um den OnMatchmakingTicketStatusChanged-Ereignishandler zu definieren, fügen Sie der -Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnMatchmakingTicketStatusChanged(MatchmakingTicket ticket) { // Store and print matchmaking ticket Debug.Log(ticket.TicketId); // Examine matchmaking ticket status Debub.Log(ticket.Status) // Share matchmaking ticket with other clients taking part in matchmaking // Examine ticket }
Speichern Sie, und wählen Sie im Unity-Editor wiedergeben aus.
Ein OnMatchmakingTicketStatusChanged wird mit dem Status WaitingForMatch ausgelöst.
Abschließen eines Matchmaking-Tickets
In diesem Teil des Leitfadens wird gezeigt, wie die Matchmaking abgeschlossen wird. Führen Sie es mit dem Szenario "Erstellen eines Matchmaking-Tickets" auf einem anderen Client aus. Optional können Sie es mit dem Szenario "An einem Matchmaking-Ticket teilnehmen" ausführen.
Sobald mehrere Tickets in derselben Warteschlange abgeglichen werden können, wird eine Übereinstimmung gefunden. In diesem Fall wird der OnMatchmakingTicketCompleted-Ereignishandler ausgelöst.
Abonnieren des OnMatchmakignTicketCompleted-Handlers
PlayFabMultiplayer.OnMatchmakingTicketCompleted += PlayFabMultiplayer_OnMatchmakingTicketCompleted;
Um den OnMatchmakingTicketCompleted-Ereignishandler zu definieren, fügen Sie der -Klasse den folgenden Code hinzu:
private void PlayFabMultiplayer_OnMatchmakingTicketCompleted(MatchmakingTicket ticket, int result) { if (LobbyError.SUCCEEDED(result)) { // Successfully completed matchmaking ticket Debug.Log("Completed matchmaking ticket"); // Examine matchmaking details MatchmakingMatchDetails details = ticket.GetMatchDetails(); } else { // Error completing a matchmaking ticket Debug.Log("Error completing a matchmaking ticket"); } }