LoginSignup
61
55

More than 5 years have passed since last update.

[超初心者向け]UnityのuGUIでの文字の出し方

Last updated at Posted at 2015-05-19

Unityで文字を出す、その中身を変える方法です。

エディタでの準備

ではまずエディタからで準備していきます。

オブジェクトの配置

  1. エディタから[GameObject]>[UI]>[Text]を選びます。
  2. タブをGame画面に切り替えて下さい、そうすると、画面の中央に"NewText"と現れます。
    NewTextOnGame.PNG
    この状態でとりあえず、文字列が出ています。

  3. ヒエラルキーとインスペクタを確認
    HieralchyInspector.PNG

  • 表示した文字は、自動的に"Canvas"というGUI表示のレイヤが作られて、その中に入っています。このCanvasは、3D空間と独立して、カメラの方向が変わっても画面に張り付いた状態になります(これがデフォルトで、設定で変えられます)。
  • インスペクターを見ると、名前が"Text"になっていて、座標が原点に置かれているのが判ります。PivotがよくあるTransformと違います、これは座標の中心の位置を示しています。 詳しくは以下を見てください。 Unity マニュアルUIUI リファレンス Visual ComponentsText

設定の変更

  1. 位置を変えてみる
    インスペクタのPosX,PosYを変更して、表示位置を確認して下さい。
    InspectorPosition.PNG
    上下左右に移動できます。Canvasに張り付いているので、z座標を変えても見た目は変わりません。

  2. 文字を変えてみる
    Text(Script)コンポーネントにあるTextに入力された文字が、表示されている文字列です。これを変えてみてください。
    TextText.PNG

  3. 大きさや色を変えてみる
    更に下のところを変えると、文字の大きさ、色などが変わります。自分の出したい形にしてみましょう

    SizeColor.PNG

これら以外も、弄って変化を確かめて、自分の出したい形にしましょう。

Scriptからのアクセス

ここからは、この文字列の中身を変えられるようにしてみましょう。

表示変更用のScriptの用意

TextにScriptコンポーネントを用意して、書き換える処理を追加します。

  1. 名前を変えておく
    文字列か判らなくなると、後から困ります。取り敢えず、名前を変えておきましょう。ここでは点数を出す為の文字列、と仮定して、それが分かり易い名前"ScoreText"にしておきます。
    Scorenamed.PNG

  2. Scriptファイルを用意する
    インスペクタの一番下にある[AddCompornent]ボタンを押して、[New Script]を選び、Scriptファイルを生成しコンポーネントに追加します。
    CScreated.PNG
    CScreatedCompo.PNG

  3. Scriptを編集する
    インスペクタの"ScoreText"(もしくはAssets内の"ScoreText")をダブルクリックして、Scriptを編集します。

ScoreText.CS
using UnityEngine;
using System.Collections;
using UnityEngine.UI;  ////ここを追加////

public class ScoreText : MonoBehaviour {

    //点数を格納する変数
    public int score = 0;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        this.GetComponent<Text>().text = "点数" + score.toString() + "点";
    }
}
  • このScriptでは、変数scoreの値に入っている値が123なら、「点数123点」と表示されます。
  • 何か点数を変えたい時に、この変数scoreを変えます。
  • score.toString()はint型の変数scoreの値を文字列に変換します。文字列同士を+で繋いだ式は全体を文字列として評価され、値が入ります。

他のスクリプトから値を変える

以下は、当たり判定で相手のタグが"ball"の時に点数が入る例です。

値を変えたい側のScriptを編集

値を変えたい側のScriptを開いて、ScoreTextの名前のオブジェクトが見えるようにpublicで定義して、演算出来るようにします。

Bascket.cs
using UnityEngine;
using System.Collections;

public class Bascket : MonoBehaviour {

    public ScoreText scoreText; //外部のScoteTextオブジェクトを見えるよう定義

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "ball") {
            scoreText.GetComponent<ScoreText>().score++;
        }
    }
}

UnityエディタのインスペクタでScoreText型のオブジェクトを設定

追加されたpublic宣言がインスペクタに現れるので、それを変更します。ScoreTextとある部分をクリックして、先ほど作ったScrtiptを選んで下さい。
global.PNG
これで値が変わるようになりました。

61
55
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
55