Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
55
Help us understand the problem. What is going on with this article?
@JunShimura

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

More than 5 years have passed since last update.

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
これで値が変わるようになりました。

55
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
55
Help us understand the problem. What is going on with this article?