다음을 통해 공유


빠른 시작: PlayFab Party Unity 플러그인

이 빠른 시작은 Unity용 파티 SDK를 설치하고 첫 번째 API 호출을 수행하여 플레이어를 파티 네트워크에 참여시키는 데 도움이 됩니다. 계속하기 전에 PlayFab 계정에서 게임 관리자를 통해 파티 활성화 기능을 완료했는지 확인합니다.

참고 항목

이 플러그 인을 사용하여 Microsoft GDK(게임 개발 키트)를 기반으로 게임을 개발하려면 GDK를 별도로 획득하고 설치해야 합니다. Xbox 콘솔에서 Game Core용 Unity 추가 기능에 대한 세부 정보도 참조하세요.

요구 사항

  • PlayFab 개발자 계정

  • 설치된 Unity 편집기 복사본. Unity Hub를 통해 개인용 Unity를 설치하거나 전문가용 Unity+를 설치하려면 Unity 다운로드를 참조하세요. 필요한 경우 특정 플랫폼의 설명서에서 Unity 지원을 확인합니다. 지원되는 최소 Unity 버전은 Unity 2017 LTS입니다.

  • Unity 프로젝트는 다음 옵션 중 하나일 수 있습니다.

    • 새로운 프로젝트: 자세한 내용은 처음 Unity 시작하기를 참조하세요.
    • 안내가 있는 자습용 프로젝트입니다. 자세한 내용은 Unity 시작하기를 참조하세요.
    • 기존 프로젝트입니다.
  • PlayFab "core" Unity3D SDK입니다. Unity3D SDK 설치에 대한 자세한 내용은 빠른 시작: Unity 내 C#용 PlayFab 클라이언트 라이브러리의 "PlayFab SDK 다운로드 및 설치" 섹션을 참조하세요.

PlayFab Party Unity 플러그인 다운로드 및 설치

PlayFab Party Unity 플러그인을 다운로드하고 설치하는 단계를 수행합니다.

  1. PlayFab Party Unity 플러그인 자산 패키지를 다운로드합니다(플랫폼에 따라 다른 배포 지점 사용).
  2. 중요! 플러그 인과 함께 게시된 README 파일의 정보를 참조하세요. 각 특정 버전에 맞춰져있으며 특정 플랫폼과 관련된 중요한 지침을 포함할 수 있습니다.
  3. Unity 프로젝트를 엽니다.
  4. .unitypackage를 저장한 위치로 이동한 후 두 번 클릭하여 가져온 대화를 엽니다.
  5. PlayFab Party Unity 플러그인을 프로젝트로 가져오려면 가져오기를 선택합니다.

장면 설정

가이드의 이 부분에서는 장면에 PlayFabMultiplayerManager을(를) 추가하여 Unity에서 PlayFab 파티 API를 호출하는 방법을 보여 줍니다.

네트워크를 만들려면 반드시 먼저 PlayFab 플레이어에 로그인되어 있어야 합니다. 플레이어에 로그인하는 방법에 대한 자세한 내용은 빠른 시작: Unity 내 C#용 PlayFab 클라이언트 라이브러리의 첫 API 호출 만들기를 참조하세요.

  1. Unity 편집기의 프로젝트 창에서Assets > PlayFabPartySDK > Prefabs로 이동합니다.

  2. Prefabs 폴더에서 PlayFabMultiplayerManager계층 구조 창의 장면으로 끌어서 놓습니다.

  3. 장면에서 "HelloPartyLogic"이라는 빈 게임 개체를 만듭니다.

  4. HelloPartyLogic 게임 개체를 선택하여 검사기를 엽니다.

  5. 구성 요소 추가를 선택합니다.

  6. "HelloPartyLogic"을 입력하고 Enter 키를 눌러 새 스크립트 메뉴를 표시합니다.

  7. Enter 키를 다시 눌러 새 스크립트 HelloPartyLogic.cs를 만듭니다.

  8. 프로젝트 창에서 스크립트를 찾아서 두 번 클릭하여 스크립트를 편집합니다.

  9. 스크립트에 다음 using 문을 추가합니다.

    using PlayFab;
    using PlayFab.Party;
    using PlayFab.ClientModels;
    
  10. 시작 메서드에 다음 코드를 추가하여 PlayFab에 로그인합니다.

    // Log into playfab
    var request = new LoginWithCustomIDRequest { CustomId = UnityEngine.Random.value.ToString(), CreateAccount = true };
    PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
    
  11. 클래스에 다음 메서드를 추가합니다.

    private void OnLoginSuccess(LoginResult result)
    {
    }
    
    private void OnLoginFailure(PlayFabError error)
    {
    }
    

참고 항목

다음과 같은 오류가 발생할 수 있습니다.

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 및 Windows가 x64만 지원합니다.

이러한 문제를 해결하려면 다음을 수행합니다.

  1. Unity 편집기에서 파일 > 빌드 설정을 선택합니다.
  2. 플랫폼을 선택합니다. 그런 다음 아키텍처 드롭다운에서 x86\_64 또는 x64를 선택합니다.
  3. 플레이어 설정을 선택합니다.
  4. 오른쪽 창에서 기타 설정을 선택합니다.
  5. 안전하지 않은 코드 허용 설정을 찾아 선택합니다.
  6. 빌드 설정프로젝트 설정 창을 닫습니다.

네트워크에 연결

가이드의 이 부분은 네트워크를 만들고 연결하는 방법을 보여줍니다.

  1. HelloPartyLogic.cs 스크립트를 엽니다. OnLoginSuccess 메서드에서 다음 코드를 추가하여 네트워크를 만들고 연결합니다.

    PlayFabMultiplayerManager.Get().CreateAndJoinNetwork();
    PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
    
  2. OnNetworkJoined 이벤트 처리기를 정의하려면 클래스에 다음 코드를 추가합니다.

    private void OnNetworkJoined(object sender, string networkId)
    {
        // Print the Network ID so you can give it to the other client.
        Debug.Log(networkId);
    }
    
  3. Unity 편집기에서 저장 후 재생을 선택합니다. 콘솔 창에 네트워크 ID가 표시됩니다.

기존 네트워크 연결

가이드의 이 부분에서는 다른 클라이언트가 만든 기존 네트워크에 연결하는 방법을 보여줍니다.

  1. HelloPartyLogic.cs 스크립트를 엽니다. OnLoginSuccess 메서드에서 네트워크에 연결하기 위해 다음 코드를 추가합니다.

    string networkId = "<your network id>";
    PlayFabMultiplayerManager.Get().JoinNetwork(networkId);
    
  2. 로컬 클라이언트가 네트워크에 연결할 때 발생하는 이벤트를 정의하려면 OnLoginSuccess 메서드에 다음 코드를 추가합니다.

    PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
    
  3. OnNetworkJoined 이벤트 처리기를 정의하려면 클래스에 다음 코드를 추가합니다.

        private void OnNetworkJoined(object sender, string networkId)
        {
            // Print the Network ID so you can give it to the other client.
            Debug.Log("Network joined!");
        }
    

    호스트로부터 연결하려는 다른 플레이어로 네트워크 ID를 가져오는 방법에는 여러 가지가 있습니다. 이러한 방법의 예는 이 Unity 플러그 인의 샘플을 참조하세요.

  4. Unity 편집기에서 저장 후 재생을 선택합니다. "Network Joined!" 문자열이 콘솔 창에 표시됩니다.

다른 플레이어 액세스

가이드의 이 부분에서는 로컬 플레이어를 포함하여 네트워크의 다른 플레이어에 액세스하는 방법을 보여줍니다.

네트워크에 연결하거나 네트워크에서 나가는 새 플레이어에 대해 알림을 받으려면 OnRemotePlayerJoined 및 OnRemotePlayerLeft 이벤트를 등록하세요.

  1. HelloPartyLogic.cs 스크립트를 엽니다. OnLoginSuccess 메서드에서 네트워크를 만들고 연결하기 위해 다음 코드를 추가합니다.

    PlayFabMultiplayerManager.Get().OnRemotePlayerJoined += OnRemotePlayerJoined;
    PlayFabMultiplayerManager.Get().OnRemotePlayerLeft += OnRemotePlayerLeft;
    
  2. 클래스에 다음 메서드를 추가합니다.

    private void OnRemotePlayerLeft(object sender, PlayFabPlayer player)
    {
    }
    
    private void OnRemotePlayerJoined(object sender, PlayFabPlayer player)
    {
    }
    
  3. 로컬 플레이어에 액세스하려면 OnRemotePlayerJoined 메서드에 다음 코드를 추가합니다.

    var localPlayer = PlayFabMultiplayerManager.Get().LocalPlayer;
    

PlayFabPlayer 클래스는 채팅 UI에서 플레이어를 식별하고, 음소거시키고, 채팅 상태를 렌더링하는 속성을 포함합니다.

데이터 메시지 주고 받기

가이드의 이 부분에서는 데이터 메시지를 주고 받는 방법을 보여줍니다. 데이터 메시지를 주고 받으려면 먼저 네트워크에 연결해야 합니다.

  1. HelloPartyLogic.cs 스크립트를 엽니다. OnLoginSuccess 메서드에서 다음 코드를 추가하여 데이터 메시지 알림을 받을 수 있습니다.

    PlayFabMultiplayerManager.Get().OnDataMessageReceived += LocalPlayer_OnDataMessageReceived;
    
  2. 클래스에 OnDataMessageRecieved 이벤트 처리기를 추가합니다.

    private void OnDataMessageReceived(object sender, PlayFabPlayer from, byte[] buffer)
    {
        Debug.Log(Encoding.Default.GetString(buffer));
    }
    
  3. 데이터 메시지를 보내려면 Update 메서드에 다음 코드를 추가합니다.

    if (Input.GetButtonDown("Fire1"))
    {
        byte[] requestAsBytes = Encoding.UTF8.GetBytes("Hello (data message)");
        PlayFabMultiplayerManager.Get().SendDataMessageToAllPlayers(requestAsBytes);
    }
    

Unity 편집기에서 HelloPartyLogic.cs를 저장하고 재생을 선택합니다.

  1. 두 번째 클라이언트에서 네트워크 연결의 단계를 반복하여 네트워크를 만들고 연결합니다.
  2. 첫 번째 클라이언트에게 반환된 네트워크 ID를 복사하고 네트워크에 연결합니다.
  3. 메시지를 보낼 장면을 선택합니다. 콘솔 창에 "Hello(데이터 메시지)"가 표시됩니다.

채팅 메시지 주고 받기

가이드의 이 부분에서는 채팅 메시지를 주고 받는 방법과 원격 플레이어를 음소거하는 방법을 보여줍니다. 파티는 문자 채팅 외에도 자동으로 플레이어 간에 음성 채팅을 사용하도록 설정합니다.

채팅 메시지를 주고 받으려면 먼저 네트워크에 연결해야 합니다.

  1. HelloPartyLogic.cs 스크립트를 엽니다. OnLoginSuccess 메서드에서 다음 코드를 추가하여 채팅 메시지 알림을 받을 수 있습니다.

    PlayFabMultiplayerManager.Get().OnChatMessageReceived += OnChatMessageReceived;
    
  2. 클래스에 OnChatMessageReceived 이벤트 처리기를 추가합니다.

    private void OnChatMessageReceived(object sender, PlayFabPlayer from, string message, ChatMessageType type)
    {
        Debug.Log(message);
    }
    

Unity 편집기에서 HelloPartyLogic.cs를 저장하고 재생을 누릅니다.

  1. 두 번째 클라이언트에서 네트워크 연결의 단계를 반복하여 네트워크를 만들고 연결합니다.

  2. 첫 번째 클라이언트에게 반환된 네트워크 ID를 복사하고 네트워크에 연결합니다.

  3. 장면을 선택하면 메시지가 전송되고 콘솔 창에 표시됩니다.

  4. 플레이어에게 다른 플레이어를 음소거할 수 있는 옵션을 제공하려면 IsMuted 속성을 true로 설정합니다.

    private void OnRemotePlayerJoined(object sender, PlayFabPlayer player)
    {
        // This player will not be able to send text or voice communication.
        // Data messages can still be sent.+
        player.IsMuted = true;
    }
    

사용자 지정 피어 연결 구성 옵션을 사용하여 네트워크에 연결

가이드 메뉴의 이 부분에서는 사용자 지정 피어 연결 구성 옵션을 사용하여 네트워크를 만들고 조인하는 방법을 보여줍니다. 기본 옵션은 P2P이지만 DirectPeerConnectivityOptions에 표시된 플래그 조합을 사용하여 사용자가 이 옵션을 수정할 수 있습니다. 이 예제에서는 P2P 설정 방법을 보여줍니다.

  1. HelloPartyLogic.cs 스크립트를 엽니다. OnLoginSuccess 메서드에서 다음 코드를 추가하여 네트워크를 만들고 연결합니다.

    PlayfabNetworkConfiguration networkConfiguration = new PlayfabNetworkConfiguration();
    networkConfiguration.DirectPeerConnectivityOptions = PARTY_DIRECT_PEER_CONNECTIVITY_OPTIONS_ANY_PLATFORM_TYPE |
                                                         PARTY_DIRECT_PEER_CONNECTIVITY_OPTIONS_ANY_ENTITY_LOGIN_PROVIDER;
    PlayFabMultiplayerManager.Get().CreateAndJoinNetwork(networkConfiguration);
    PlayFabMultiplayerManager.Get().OnNetworkJoined += OnNetworkJoined;
    

타이틀 일시 중단 처리

일부 플랫폼에서는 iOS, Switch, GDK와 같은 타이틀 실행을 일시적으로 일시 중단할 수 있습니다. 타이틀이 일시 중단되면 네트워크 스택이 무효화되고 PlayFab 파티가 PlayFab 파티 네트워크 연결을 유지할 수 없게 됩니다. PlayFab 파티를 사용할 때 타이틀의 일시 중단 및 재개 실행을 처리하려면 특별한 고려 사항이 필요합니다.

iOS

iOS에서는 ResetParty()를 호출하여 PlayFab 파티 네트워크에서 나갔다가 다시 연결해야 합니다.

Switch 및 GDK

Nintendo Switch 및 Microsoft GDK에서는 PlayFab 파티 및 PlayFabMultiplayerManager와 연결된 모든 리소스를 정리한 다음, 타이틀 실행이 다시 시작될 때까지 기다렸다가 PlayFab 파티를 다시 초기화하고 네트워크에 다시 연결해야 합니다.

"타이틀 일시 중단 중에 PlayFab 파티를 정리하려면 Suspend()를 호출합니다. 타이틀이 실행을 다시 시작하면 Resume()을 호출하여 PlayFab 파티를 다시 초기화합니다.

PlayFab 파티 및 PlayFabMultiplayerManager와 연결된 모든 리소스가 초기화되면 기존 네트워크 조인 단계를 반복합니다.