コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

UnityでFizzBuzzをやりたい

FizzBuzzをやりたい

はい、というわけでして最近すっかりUnityばかりさわっているユニトロジストの僕です。マーカーを称えなさい。本日はUnityを利用してFizzBuzzを作成しなさいという天啓を授かったのでそれを作っていきたいと思います。


まずはデバッグログでFizzBuzzをば……。

using UnityEngine;
public class FizzBuzz : MonoBehaviour {
    public int start = 1;
    public int end = 100;
	void Start () {
        for (int i = start; i <= end; i++)
        {
            if (i % 15 == 0)
            {
                Debug.Log("FizzBuzz");
            }
            else if (i % 3 == 0)
            {
                Debug.Log("Fizz");
            }
            else if (i % 5 == 0)
            {
                Debug.Log("Buzz");
            }
            else
            {
                Debug.Log(i);
            }
        }
    }
}

インスペクタ上で値いじるの大好きすぎてなんでもPublicにしてしまう……。とりあえず初期値は1~100です。これで実行結果はこう。余計なことをすると色々考慮いれなきゃいけない点がでてくるけどこれで。
f:id:andron:20180530195838p:plain
はい、完成です。お疲れ様でした。


で終わるとでも思ったか……、UIの練習も兼ねて画面上にFizzBuzzを実装していきます。ただ画面上に文字を出すのもつまらないので、入力値をとってきてそれがFizzならFizz、BuzzならBuzzみたいな感じで出力されるやつをつくろうと思います(致命的な語彙力)。

まずは、2D画面上にパパパーッとUIを配置していきます。そんで、インプットフィールドにボタンのアクションを紐づけしーの、ボタンから入力値判定スクリプトを実行するように設定しーのといじっていきます。
f:id:andron:20180530210114p:plain

using UnityEngine;
using UnityEngine.UI;
using System;

public class InputControl : MonoBehaviour {

    InputField inputField;
    Text text;
    private int i;

    void Start () {
        inputField = GameObject.Find("InputField").GetComponent<InputField>(); // 入力ボックス
        text = GameObject.Find("Result").GetComponent<Text>(); // 結果表示テキスト
    }
	
    public void InputText()
    {
        if (inputField.text == "") {
            inputField.text = "0";
        }
        i = Convert.ToInt32(inputField.text);
        if (i % 15 == 0)
        {
            text.text = "FizzBuzz";
        }
        else if (i % 3 == 0)
        {
            text.text = "Fizz";
        }
        else if (i % 5 == 0)
        {
            text.text = "Buzz";
        }
        else
        {
            text.text = Convert.ToString(i);
        }       
    }
}

こんな感じにスクリプトを書きーので実行してみるとこうなりました。



f:id:andron:20180530210239g:plain

これ作ってから知ったんですけど、インプットフィールドの入力値ってわざわざボタンにアクションを紐づけしなくても「Enter」で送信されたんですね。まあ、チャット機能的なやつだったら送信ボタンとかいらないですもんね……。


はい、現場からは以上となります。