2016年10月27日木曜日

Unityで作ったアプリがメモリリーク!




どーもお久しぶりです。新事業部のありかわです。

最近Unityでゲームアプリを作っているのですが
久々にメモリリークではまってしまいました。

Unityに限らずオブジェクト指向言語ならGCが組み込まれていても、
オブジェクトへの参照が残りっぱなしになる状態が続くと
参照されてるオブジェクトは破棄されず、メモリリークになります。
当たり前ですけど。

そういった観点で色々調べて、Webでも

【Unity】DestroyしたオブジェクトのMaterialがリークする問題への対応
とか

DestroyしてUnloadUnusedAssetsしてもアセットがアンロードされない場合がある話
とか

参考にさせて頂いたのですが一向に原因がわからずめちゃくちゃ困ってました。

Unityファ○ク!!とか思ってたら、、AdMobのプラグインの使い方ミスってたのが原因でした。
Unityさんごめんなさい。

UnityでAdMobの広告を表示するのにBannerView、InterstitialAdといったクラスを使うんですが
使い終わったら各クラスのDestroy()メソッドを呼び出さないとリークの原因になるみたいです。

↓公式のサイトに書いてました。
ゲーム デベロッパー向け: 広告に関するおすすめの方法

ちゃんと読めや!って話ですよね。

それじゃまた。


0 件のコメント:

コメントを投稿