Unity + PlayFab Party를 사용할 때의 주의점

소개



PlayFab Party를 도입할 때 주의해야 할 내용을 정리해 두고 싶습니다.

※ 참고로 Mac용 dll이 준비되어 있지 않기 때문에 Mac 환경의 Unity 에디터에서는 사용할 수 없습니다.

Unity 설정



Unity 플러그인 가져오기



위에서 최신 버전의 unitypackage를 다운로드하여 가져옵니다.

※여기서 주의해야 하는 것은 PlayFab Party 패키지 내에 PlayFab SDK도 포함되어 있습니다. 만약, PlayFab Party 를 임포트 하기 전에 최신의 PlayFab SDK 를 임포트하고 있는 경우는 PlayFab Party 쪽에 포함되는 PlayFab SDK 가 낡은 경우가 있으므로, 덧쓰기할 때에는 주의해 주세요.

Unity 측 설정



Unity에서 사용하려면 Allow 'unsafe' Code를 활성화해야 합니다.



Android용 설정



Android를 빌드할 때 다음과 유사한 오류가 표시될 수 있습니다.



이것은 PlayFab Party를 가져올 때 Custrom Main Gradle Templete를 활성화하지만 사용중인 Unity 버전에 따라 mainTemplete.gradle 설정이 일치하지 않기 때문에 발생합니다.
이 문제를 해결하려면 Assets/Plugins/Android/mainTemplete.gradle을 다음과 같이 다시 작성합니다.
aaptOptions {
    // この行を追加
    noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ')
    ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
}**PACKAGING_OPTIONS**

또한 다음 오류가 발생하면 gradle.properties 업데이트가 필요합니다.
FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':launcher:lintVitalRelease'.
> This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled. Set this property to true in the gradle.properties file and retry.

Gradle 파일을 출력할 때 AndroidX 및 Jetifier를 활성화하는 설정을 gradle.properties에 추가합니다.
이 오류는 PlayFab Party 이외의 플러그인에서 gradle.properties를 출력하기 때문입니다.
public int callbackOrder
{
    // 最後に実行されるようにする
    get => 999;
}

// IPostGenerateGradleAndroidProject を継承したクラスに実装する
public void OnPostGenerateGradleAndroidProject(string path)
{
    // path には gradle の出力先が渡されてくるが gradle.properties はその上の階層に配置されている
    using (var stream = File.AppendText(Path.Combine(path, "..", "gradle.properties"))) {
        stream.WriteLine("");
        stream.WriteLine("android.useAndroidX=true");
        stream.WriteLine("android.enableJetifier=true");
    }
}

iOS용 설정(추기)



PlayFab Party에서는 기본적으로 음성 채팅이 활성화되어 있으므로 Unity ProjectSettings의 Microphone Usage Description에 설명을 넣지 않으면 런타임에 충돌합니다.


결론



도입시에는 이 정도의 문제점으로 즉시 멀티 플레이를 구현할 수 있으므로 한 번 PlayFab Party의 도입을 검토해 보는 것은 어떻습니까?

좋은 웹페이지 즐겨찾기