🔧

【Unity】PlayFabのエラー「A Native Collection...」の解決方法

2023/10/21に公開

Playfabでメモリリークのエラーが発生したのでその解決策です。

発生したエラー文

A Native Collection has not been disposed, resulting in a memory leak. Allocated from:
Unity.Collections.NativeArray`1:.ctor(Byte[], Allocator)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
PlayFab.Internal.<Post>d__12:MoveNext() (at Assets\PlayFabSDK\Shared\Internal\PlayFabHttp\PlayFabUnityHttp.cs:117)
エラー全文

A Native Collection has not been disposed, resulting in a memory leak. Allocated from:
Unity.Collections.NativeArray1:.ctor(Byte[], Allocator) UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[]) PlayFab.Internal.<Post>d__12:MoveNext() (at Assets\PlayFabSDK\Shared\Internal\PlayFabHttp\PlayFabUnityHttp.cs:117) UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) UnityEngine.MonoBehaviour:StartCoroutineManaged2(MonoBehaviour, IEnumerator) UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator) PlayFab.Internal.PlayFabUnityHttp:MakeApiCall(Object) (at Assets\PlayFabSDK\Shared\Internal\PlayFabHttp\PlayFabUnityHttp.cs:107) PlayFab.Internal.PlayFabHttp:_MakeApiCall(String, String, PlayFabRequestCommon, AuthType, Action1, Action1, Object, Dictionary2, Boolean, PlayFabAuthenticationContext, PlayFabApiSettings, IPlayFabInstanceApi) (at Assets\PlayFabSDK\Shared\Internal\PlayFabHttp\PlayFabHTTP.cs:232)
PlayFab.Internal.PlayFabHttp:MakeApiCall(String, PlayFabRequestCommon, AuthType, Action1, Action1, Object, Dictionary2, PlayFabAuthenticationContext, PlayFabApiSettings, IPlayFabInstanceApi) (at Assets\PlayFabSDK\Shared\Internal\PlayFabHttp\PlayFabHTTP.cs:133) PlayFab.PlayFabEventsInstanceAPI:WriteEvents(WriteEventsRequest, Action1, Action1, Object, Dictionary2) (at Assets\PlayFabSDK\Events\PlayFabEventsInstanceAPI.cs:118)
PlayFab.Public.ScreenTimeTracker:Send() (at Assets\PlayFabSDK\Entity\ScreenTimeTracker.cs:190)
PlayFab.Public.ScreenTimeTracker:OnApplicationFocus(Boolean) (at Assets\PlayFabSDK\Entity\ScreenTimeTracker.cs:165)
PlayFab.Internal.PlayFabHttp:OnApplicationFocus(Boolean) (at Assets\PlayFabSDK\Shared\Internal\PlayFabHttp\PlayFabHTTP.cs:338)
UnityEditorInternal.InternalEditorUtility:OnGameViewFocus(Boolean)
UnityEditor.PlayModeView:SetFocus(Boolean)
UnityEditor.GameView:OnLostFocus()
UnityEditor.HostView:OnLostFocus()

解決策

エディタのバージョンが2021.3.3.11f1(2021年バージョン)だとエラーが発生するようなので、エディタのバージョンを2022のLTSに変更したら完全になおりました

試したけど何の効果も無かったやつ↓

①全削除してもう一回入れる

一度PlayfabSDKとPlayfabEditorExtentionsを削除しました。
アセットでPlayfabと検索して出てきたフォルダ全部削除しました。ちなみにPlayfabEditorExtentionsがなぜか複数プロジェクト内にあったので、全部綺麗に削除しました。
再度手順通りにPlayfabEditorExtentionsを入れてそこからPlayfabSDKをインストールしたらエラー発生しなくなりました。

②PlayFab editor extensionsの単体削除

③PlayFab editor extensionsを使用せずにSDKダウンロード

④以下に記載の事も試した

https://community.playfab.com/questions/65805/a-native-collection-has-not-been-disposed-resultin-1.html

⑤ライブラリフォルダの削除から再起動

ただしかなり時間がかかるので注意
効果なし

⑥別に無視でも問題なし?

この問題はPlayFab 拡張機能によるものなので無視しても良いという意見も。ただ気になる。
https://community.playfab.com/questions/59243/a-native-collection-has-not-been-disposed-after-ad.html

記事は以上です。

Discussion