Image Score Class

自前の画像でカウンターを表示します。

プロジェクトの作成

  1. Score Class を参照して画像が回転するプロジェクトを作成して下さい。
    Score Class では GUI Text で Score を表示しましたが、今回はページ先頭のように自前の画像を使って Score を表示します。
  2. Assets 上で右クリックして Create→Folder から Resources フォルダーを作成します。
    ウインドウエクスプローラで自前の画像を Assets/Resources にドラッグします。
    画像はページ先頭のように0~9の文字とマイナス記号で構成します。
  3. Resources の画像を切り分けます。
    私はページ先頭の画像(number.gif)を使っているので 32*64 で切り分けます。
    画像の切り分けは 美人のアニメーション を参考にして下さい。
  4. [Projectタブ][Createタブ] から [C# Script] を選び Score.cs を作成して、次のように修正して下さい。
    下記のソースでは5桁で Score を表示しています。
    Sprite[] digit; は切り分けた数字の画像の領域で Resources.LoadAll<Sprite>(""); で設定します。
    GameObject[] view; は Score を表示するための領域です。
    view に view[i].AddComponent<SpriteRenderer>(); を追加して .sprite に Sprite を設定すると数字が描画されます。
    posx と posy は Score を表示する座標で、好きなように修正して下さい。
    int score が表示するスコアで、 Set() 関数でスコアを設定します。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Score : MonoBehaviour
    {   private Sprite[] digit;
        private GameObject[] view;
        private float[] posx = new float[5] { 1.6f, 1.2f, 0.8f, 0.4f, 0.0f};
        private float[] posy = new float[5] { 1.5f, 1.5f, 1.5f, 1.5f, 1.5f};
        private int score = 0;
        private int wk;
        void Start ()
        {   digit = Resources.LoadAll<Sprite>("");
            Debug.Log("digit Length -> " + digit.GetLength(0));
            view = new GameObject[5];
            for(int i=0; i<5; i++)
            {   view[i] = new GameObject();
                view[i].transform.position = new Vector3(posx[i], posy[i], 0);
                view[i].AddComponent<SpriteRenderer>();
            }
            Set(12345);
        }
        public void Set (int val)
        {   score = val;
            wk = score;
            for(int i=0; i<5; i++)
            {   view[i].GetComponent<SpriteRenderer>().sprite = digit[wk%10];
                wk = wk/10;
            }
        }
    }
    
  5. NewBehaviourScript.cs をスコア(カウンター)を表示するように修正します。
    FindObjectOfType<Score>(); で Score Class を取得して、score.Set(cnt); でスコアを表示します。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript : MonoBehaviour {
        private Score score;
        private int cnt;
        void Start () {
            score = FindObjectOfType<Score>();
            cnt = 0;
        }
        void Update () {
            cnt += 1;
            score.Set(cnt);
            transform.Rotate(new Vector3(0, 0, 45) * Time.deltaTime);
        }
    }
    
  6. Score.cs をヒエラルキービューの Enemy1 にアタッチして下さい。
    画像(Enemy1)には NewBehaviourScript.cs と Score.cs がアタッチされます。
  7. 画像が小さいので Main Camera の Inspector から Size を2に設定します。
    再生ボタンで実行すると画像が回転しながらカウンターが表示されます。
    今回はカウントしただけですが、ゲームのスコア表示も同じ要領です。

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Unity)