Categories: Unity

Unity本の作例改造-Chapter3-10:ゲームスコアを画面に表示する

こんにちは!Unityの入門書で通称”ヒヨコ本”として親しまれている”Unity5入門 最新開発環境による簡単3D&2Dゲーム制作 “の作例に色々とゲーム要素を追加してオリジナルゲームに仕上げる内容を連載をしています。


Chapter1:Unityの概要と基礎知識
Chapter2:インターフェイスと使い方
Chapter3:Unityを使ってみよう!
Chapter4:キャラクターを動かしてみよう!
Chapter5:ゲームのUIを作ってみよう!
Chapter6:ゲームを作ろう!(1)
Chapter7:ゲームを作ろう!(2)
Chapter8:2D機能を使ってみよう!

ゲームスコアをUIオブジェクトで作成して表示する

前回は”リトライボタンをクリックしたらゲームをリセットする“というのを行いました。今回はゲームスコアをUIオブジェクトで作成して画面に表示してみたいと思います。

テキストUIオブジェクトを作成

[Hierarchy]ウィンドウ > [Create]ボタン > UI > Text を選択。

作成したTextを右クリック > Rename を選択”Text Score”に変更します。

テキストUIオブジェクトの階層を設定

作成したUIオブジェクト”Text Score”はタイトル画面で表示されないように階層を変更します。
下記の通り、UIオブジェクト”Panel Title”よりも上の階層に移動します。

テキストの表示位置を調整

[Hierarchy]ウィンドウ > UIオブジェクト”Text Score”を選択。[Inspector]ウィンドウ > Rect Transform 左側にあるAnchor Presetsをクリック。
Anchor Presetが表示されたらRight / Top をクリック。余白をクリックしてAnchor Presetを閉じる。

下記の通り数値を設定します。
Pos X -320 / Pos Y -20 / Width 300 / Height 60 / Pivot X 0 / Y 1

テキストのサイズを調整

[Hierarchy]ウィンドウ > UIオブジェクト”Text Score”を選択。
[Inspector]ウィンドウ > Text (Script) > Textフィールドに”SCORE: 000″を入力。
[Inspector]ウィンドウ > Text (Script) > Character > Font Size 50に設定。

動作確認

スタートボタンをクリックしてタイトル画面が非表示になると、次のように画面右上に得点が表示されます。

スコアのテキストを更新するスクリプトを作成

得点を表示するUIオブジェクトが用意できたので、次はスクリプトを用意しましょう。

スコアのテキストを更新するスクリプトを作成して”Canvas”割り当てる

[Hierarchy]ウィンドウ > オブジェクト”Canvas”を選択。
[Inspector]ウィンドウ > [Add Component]ボタン > New Scriptを選択して下記の通り入力。[Create and Add]ボタンをクリック。
Name: Score / Language: C Sharp

スクリプト”Score”の編集

[Project]ウィンドウ > スクリプト”Score”をダブルクリックでエディタで開き、下記コードを入力します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// UI関連クラスを使用できるようにする
using UnityEngine.UI;

public class Score : MonoBehaviour
{
    // UIオブジェクト"Text Score"を格納する変数
    public GameObject textScore;
    // テキストコンポーネントを格納する変数
    private Text text;

    // ゲームの初期処理
    void Start()
    {
        // 変数"textScore"に格納されたUIオブジェクトの
        // "Text"コンポーネントを取得して変数"text"に格納
        text = textScore.GetComponent<Text>();
    }

    // ゲーム実行中の繰り返し処理
    void Update()
    {
        // "Text"コンポーネントの"text"フィールドにスコアの値を代入
        //(スクリプト"Manager"の変数"score"の値を文字列として参照)
        text.text = "SCORE: " + Manager.score.ToString();
    }
}

コンポーネントの変数”Text Score”スロットにUIオブジェクト”Text Score”を割り当てる

[Hierarchy]ウィンドウ > Canvas を選択。[Inspector]ウィンドウ > Ball Count (Script)コンポーネントに下記の通り変数”Text Score”フィールドが表示されていることを確認します。
[Hierarchy]ウィンドウ > Canvas > Text Score をドラッグ&ドロップで変数”Text Score”フィールドに割り当てます。

動作確認

スクリプト”Manager”の変数”Score”の値を参照できているか確認しましょう。[Hierarchy]ウィンドウ > Manager を選択。[Inspector]ウィンドウ > Manager (Script)コンポーネント
> “Initial Score”フィールドに”777″と入力しておきます。

ゲームを再生してゲームスコアに”SCORE: 777″と表示されていればOKです。

corevale

View Comments

  • すみませんが漢字読めないので教えてください!
    いつもありがとうございます!