(株)アイメックのブログです。2016年10月27日木曜日Unityで作ったアプリがメモリリーク!どーもお久しぶりです。新事業部のありかわです。最近Unityでゲームアプリを作っているのですが久々にメモリリークではまってしまいました。Unityに限らずオブジェクト指向言語ならGCが組み込まれていても、オブジェクトへの参照が残りっぱなしになる状態が続くと参照されてるオブジェクトは破棄されず、メモリリークになります。いった観点で色々調べて、Webでも【Unity】DestroyしたオブジェクトのMaterialがリークする問題への対応とかDestroyしてUnloadUnusedAssetsしてもアセットがアンロードされない場合がある話とか参考にさせて頂いたのですが一向に原因がわからずめちゃくちゃ困ってました。Unityファ○ク!!とか思ってたら、、AdMobのプラグインの使い方ミスってたのが原因でした。Unityさんごめんなさい。UnityでAdMobの広告を表示するのにBannerView、InterstitialAdといったクラスを使うんですが使い終わったら各クラスのDestroy()メソッドを呼び出さないとリークの原因になるみたいです。↓公式のサイトに書いてました。広告に関するおすすめの方法ちゃんと読めや!って話ですよね。Identityを利用して独自ユーザーを作る(後編)今回はログインとパスワード変更です。ログイン前回登録したユーザーでログインしようとすると、またエラーが発生します。{どうしたものかとググってみると、このメソッドをオーバーライドしているサイトを見つけました。同じようにオーバーライドします。あとは、ストアクラスにパスワード取得メソッドを実装すればOKです。}}パスワード変更パスワードの変更画面でパスワードを変更しようとすると、またまたエラーが発生します。{もうお分かりですよね?ChangePasswordAsyncをオーバーライドします。IdentityResult.Failed("パスワードが正しくありません。IdentityResult.Success;}必要なメソッドをストアクラスに実装します。}}これでパスワード変更ができました。Identityを初めて使っています。非常に便利なのですが、VisualStudioでMVCテンプレートを選択して作成したプロジェクトでは、IdentityUserを継承しているためにメールアドレスや電話番号等が含まれており、シンプルに名前とパスワードだけを使いたいような場合にはオーバースペックですよね。そこで、生成したプロジェクトをベースに、必要最小限のユーザー情報で登録・ログインなどができるように変更してみたいと思います。ApplicationUserをIUserを実装するように変更し、パスワードを追加します。}}コンテキストをDbContext派生にします。}}IUserStoreを実装するストアクラスを新しく作ります。IUserStoreインターフェースの実装は省略}作成したストアをユーザーマネージャーのコンストラクタに渡します。}}これでビルドが通るようになりました。デバッグを開始し、登録しようとするとエラーが発生します。{ということで、ストアクラスにIUserPasswordStoreも実装します。その他のインターフェースの実装は省略}再度、登録しようとするとまたエラーが発生しました。{IUserPasswordStoreはまだしも、さすがにIUserEmailStoreを実装するわけにはいきません。CreateAsyncメソッドをオーバーライドすることにしました。}}ストアクラスの作成処理はこんな感じです。}}これで登録ができるようになりました。