プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

Unity3D スコア表示とタップによるスコアアップ方法

■Unityのスコア表示とタップ(PCの場合は左クリック)によるスコアアップ方法の備忘録
特に2D・3Dのどちらでも同じような実装方法だが今回は3D版を選択
 
①Unityの新規プロジェクトを作成

 
②ヒエラルキーウィンドウから「Create」⇒「Create Empty」を押下し、GameObjectを作成
※今後の拡張も考慮して、スコアアップのスクリプトは後ほどこのGameObjectにアタッチすることにする

 

 
③ヒエラルキーウィンドウから「Create」⇒「UI」⇒「Text」を押下し、Text内容を「Score:0」に変更
※自動的にCanvas配下に「Text」が作成される

 

 

 
④プロジェクトウィンドウから「Create」⇒「Folder」を押下し、「Scripts」フォルダを作成する

 

 

 
⑤④で作成した「Scripts」フォルダ配下に「GameManager.cs」という名称でスクリプトを作成

 
⑥⑤で作成した「GameManager.cs」に下記内容を記述


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//【scoreText.GetComponent().text】を使用する為のパッケージをインポート
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    //画面に表示するスコア
    GameObject scoreText;
    //実際のスコア
    int score;

    // Start is called before the first frame update
    void Start()
    {
        //ヒエラルキーウィンドウのTextのGameObjectを取得し、scoreTextをセット
        scoreText = GameObject.Find("Text");
    }

    // Update is called once per frame
    void Update()
    {
        //スマホをタップ(PCの場合は左クリック)した場合
        if (Input.GetMouseButtonDown(0)) {
            //スコアを「1」増やす
            score += 1;
            //ゲーム内のスコア表示をセット
            scoreText.GetComponent().text = "Score:" + score;
        }
    }
}

 
⑦⑥で作成した「GameManager.cs」をヒエラルキーウィンドウの「GameObject」ドラッグしてアタッチ

 
※アタッチされている状態

 
⑧再生してタップ(左クリック)毎にスコアが増加することが確認できればOK

 

 


上記の方法以外に、もっと簡単な方法があるのでついでに書き残しておく
 
⑤までの流れは同じなので⑥から記述
 
⑥⑤で作成した「GameManager.cs」に下記内容を記述


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//【scoreText.GetComponent().text】を使用する為のパッケージをインポート
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    //画面に表示するスコア
    //「public」で宣言
    public GameObject scoreText;
    //実際のスコア
    int score;

    // Start is called before the first frame update
    void Start()
    {
        //ヒエラルキーウィンドウのTextのGameObjectを取得し、scoreTextをセット
        //「scoreText」を「public」で宣言したので不要な為、コメントアウト
        //scoreText = GameObject.Find("Text");
    }

    // Update is called once per frame
    void Update()
    {
        //スマホをタップ(PCの場合は左クリック)した場合
        if (Input.GetMouseButtonDown(0)) {
            //スコアを「1」増やす
            score += 1;
            //ゲーム内のスコア表示をセット
            scoreText.GetComponent().text = "Score:" + score;
        }
    }
}

 
⑦ヒエラルキーウィンドウの「GameObject」を選択するとインスペクターに「Score Text」が表示されているので、ヒエラルキーウィンドウの「Text」をドラッグする

 

 
⑧再生してタップ(左クリック)毎にスコアが増加することが確認できればOK