カロリーメイトください

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

【再】『Unityの寺子屋 定番スマホゲーム開発入門』「Chapter02 放置ゲームを作ろう」3

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

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

序文

ちょっとお久しぶりです。
昨日も勉強したんですが、元のコードをいかしつつ、クラスに分解しながら同じ機能を実現するということをやろうとして訳が分からなくなって更新できませんでした。
ちょっと非同期処理みたいなのが入ると途端に真っ白になりますねぇ。

その反省をいかして今日はあまり元のコードにとらわれずに同じ機能を実装することにしました。

進捗

  • Chapter02 放置ゲームを作ろう
    • 2-2 オーブを産み出そう

コード実装部分(一部)

(PlantUML)

@startuml TheTemple
namespace Orb{
    class OrbDeleter{
        ~ Delete() : void
    }

    class OrbGenerateTimeManager{
        + OrbsManager
        + OrbGenerator
        - lastOrbGenerateTime : DateTime
        + GENERATE_SPAN_SEC : const int
        - Start() : void
        - Update() : void
    }
    OrbGenerateTimeManager --> OrbsManager
    OrbGenerateTimeManager --> OrbGenerator

    class OrbGenerator{
        + OrbsManager
        + orbPrefab : GameObject
        + OrbPositionRandomSetter
        - Start() : void
        ~ GenerateOrb() : void
    }
    OrbGenerator --> OrbsManager
    OrbGenerator --> OrbPositionRandomSetter

    class OrbPositionRandomSetter{
        + canvasGame : GameObject
        - minViewPosition : const Vector3
        - maxViewPosition : const Vector3
        ~ SetRandomPosition(GameObject) : void
    }

    class OrbsManager{
        + MAX_ORB : const int
        - currentOrb : int
        - Start() : void
        ~ GetMaxOrb() : int
        ~ GetCurrentOrbMaxOrbDifference() : int
        ~ DeleteOrb() : void
        ~ GenerateOrb() : void
    }

    class OrbTouchHandler{
        + ScoreManager
        + ScoreDisplayer
        + OrbDeleter
        + OrbsManager
        + Touch() : void
    }
    OrbTouchHandler --> Score.ScoreManager
    OrbTouchHandler --> Score.ScoreDisplayer
    OrbTouchHandler --> OrbDeleter
    OrbTouchHandler --> OrbsManager
}

namespace Score{
    class ScoreDisplayer{
        + scoreManager : GameObject
        - Start() : void
        ~ RefreshScoreText() : void
    }

    class ScoreManager{
        - score : int
        - nextScore : int
        ~ AddScore(int) : int
        ~ GetScore() : int
        ~ GetNextScore() : int
    }
    ScoreDisplayer --> ScoreManager
}
@enduml

GitHub

github.com

実行結果

www.youtube.com

クラス図

f:id:yjkym:20180926160550p:plain

感想

雰囲気でクラス図書いてみた。
そんなに理解はできてないけど、確かに見通しはよくなった気がする。

書き方が正しいかは知らない。
…またブログが長くなってしまった…。

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

参考

tsubakit1.hateblo.jp プレハブからシーン内のオブジェクトどうやって参照するのかなーと悩んでたら、プレハブを使わないという方法があった。
親オブジェクトが非アクティブなオブジェクトでもInstantiateできるんだね。
これもなんとなく裏技っぽいけど…。

BGM

I SING, I SAY / LITTLE www.youtube.com