カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

競走馬血統検索アプリ製作記【18】

f:id:yjkym:20190324202738p:plain

play.google.com
公開中です。よろしく_(._.)_

進捗

  • DB接続部分清書

久しぶりにがっつりプログラミングできる時間がとれて嬉しい。
処理自体は変わらないので、データベースを処理する名前空間ファサードを作ってやるぐらいでさくさくやった。

  • 初期化処理部分実装

はじめてDOTweenを呼び出すときやパーティクルを生成する時にスマホだと一瞬固まる症状があったので、起動直後に重くなる処理をあらかじめ動かしておくことで回避しようといろいろ試してみる。
当然、この初期化処理はユーザーから見えてはいけない。
DOTweenは処理を効率化しているのか、アニメーション時間を0にしてみるとか、CanvasGroupのAlphaを0から0にするみたいな小手先の方法ではなかなかうまくいかず、結局CanvasのOrder in Layerをいじって、背景キャンバスより後ろにした状態で動かしてやるとうまくいった。
パーティクル生成処理も同様に対処。こっちは効果があったのか微妙。

とりあえず動作面での目標は達成できたが、それぞれの初期化処理がいろいろなオブジェクトに分散しているのはよろしくない気がしたのでGameInitializerというオブジェクトを作って、そいつにすべての初期化処理を任せることにしたが、ここで問題発生。

直感的には初期化が必要なオブジェクトにはIInitializerみたいなインターフェースを適用してGameInitializerオブジェクトから初期化をさせたいと思ったのだが、インターフェースはなぜか?シリアライズができないのでUnityのエディタから直接アタッチすることができない。

どうしたもんかなーと思って、そういえば懐かしのUnityの寺子屋勉強してたときインターフェースもがんばって使ってたなーと思いだして調べてみると、GetComponent<インターフェース名>()みたいな書き方でインターフェースを継承したスクリプトを取得できることが判明。
でー、IInitializerインターフェースを実装した初期化が必要なオブジェクトをGameObjectの配列としてエディタから受け取って、それぞれGetComponent<IInitializer>().Initialize()みたいなことをするといい感じになった。

Unityの寺子屋 定番スマホゲーム開発入門

Unityの寺子屋 定番スマホゲーム開発入門

こんなブログ誰が読んでるんだとも思うが、普段にもまして冗長な文章で申し訳ない。
明日からは取得したデータを表示する部分の実装(清書)へ進む。

参考サイト

d.hatena.ne.jp

answers.unity.com

カロリーメイトください。