mattak's blog

気の向くままに書く

ゲームブートキャンプ4日目

ねんがんのどようび 16:00-19:00,20:30-

今日やること

3画面作成

  • スタート画面
  • メイン画面
  • ゲームオーバー画面

スタート画面

  • 背景を白に
  • CMD+S -> シーンの保存 StartGameScene
  • GameObject -> CreateEmpty
  • AddComponent -> Script -> StartGameScene (C#)

MonoBehaviourについて

  • Start
    • はじめに1度呼ばれる
  • Update
    • 毎フレームの描画で呼ばれる

試しにログを仕込む

void Update () {
    print ("Update");
}

わかりやすい - http://habu-st.com/blog/2011/10/unity_monobehaviour/

スタートボタンを配置

    // Update GUI
    void OnGUI() {
            if (GUI.Button(new Rect (100, 100, 100, 20), "Start")) {
                    print ("Start Button Pressed");
            }
    }

MonoDevelopがタブインデントなので、スペースに変更 - http://d.hatena.ne.jp/shinriyo/20120608/p1

ボタンを真ん中に配置する.

// Update GUI
void OnGUI() {
    const int btnWidth  = 100;
    const int btnHeight = 20;
    int btnLeft   = (Screen.width - btnWidth) / 2;
    int btnTop    = (Screen.height - btnHeight) / 2;
    Rect btnRect  = new Rect(btnLeft, btnTop, btnWidth, btnHeight);

    if (GUI.Button(btnRect, "Start")) {
        print ("Start Button Pressed");
    }
}

f:id:mattaclj:20140308170450p:plain

ゲームタイトル

// Draw Label
void DrawLabel () {
    // rect
    Rect rect;
    {
        const int offsetHeight = -40;
        const int width = 200;
        const int height = 40;
        int left = (Screen.width - width) / 2;
        int top  = (Screen.height - height + offsetHeight) / 2;
        rect = new Rect( left, top, width, height );
    }

    // font
    GUIStyle style = GUI.skin.GetStyle("Label");// new GUIStyle();
    {
        // font color
        GUIStyleState state = new GUIStyleState();
        state.textColor = Color.gray; // new Color(10, 10, 10);
        style.normal = state;

        // font size
        style.fontSize = 20;

        // alignment
        style.alignment = TextAnchor.MiddleCenter;
    }

    GUI.Label (rect, "BANANA HANTER", style);
}

f:id:mattaclj:20140308175609p:plain

Skinでまとめる

Assets -> Create -> GUISkins

GUISkinをGameObjectに適用する方法がよくわからない。。。

GameObject->Script->MySkinで対象のスキンを選択でいけた!

f:id:mattaclj:20140308183643p:plain

美咲フォントを適用してみる

f:id:mattaclj:20140308183838p:plain

いい感じ

ボタンをカスタマイズ

NGUI購入 Assets -> NGUI -> Create 2D UI

このチュートリアルビデオがわかりやすい http://www.youtube.com/watch?v=B66xhIvYF00

  • 1:48- ボタンの追加
  • 10:58- ボタンにエフェクト追加

ボタンのフォントの変更方法よくわからん、、 NGUI->OPEN -> Font Maker type: dynamic Source: Open-Sans Regular

http://caitsithware.com/wordpress/?p=78

...

スタート画面完成

f:id:mattaclj:20140309003814p:plain

いろいろあってこんなんになりました。

ゲームシーン

シーンを結びつける方法

ビルド設定に対象のシーンを追加 - File -> Build Settings -> Add Current

ゲームスタート画面のButtonに対してScriptを追加。 OnClick内にビルド設定に追加したシーンを記述

void OnClick() {
    Application.LoadLevel ("MainGameScene");
}

一定時間後に遷移

    void Start () {
            Invoke("GameOver", 5); // 5 sec
    }

    void GameOver () {
            Application.LoadLevel("GameOverScene");
    }

ゲームオーバーシーン

トップ画面とほぼ同様.

まとめ

  • 3画面側だけ作成
  • NGUIべんりー