1. 程式人生 > >遊戲製作之路(37)顯示統計星星的個數

遊戲製作之路(37)顯示統計星星的個數

在前面已經實現從開始選單到進入遊戲,也實現了從遊戲主迴圈退出到開始選單,但是在玩這個遊戲時,點選一下就產生一個星星,那麼怎麼樣才能像別的遊戲那樣實現計分,比如計算有多少個星星,並把它顯示在遊戲介面上面。這次就來解決這個問題,要想在遊戲介面上顯示星星的個數,那麼就得先在介面上建立一個label,接著問題又來了,怎麼樣建立這個label呢?

 

要建立這個label,如下圖開啟StarGame.cs指令碼檔案:

開啟這個指令碼之後,在腳本里新增按下面的程式碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StarGame : MonoBehaviour
{
    public GameObject starPrefab;
    public GUISkin skin;

    private Rect btnEndRect;
    private List<GameObject> starList;

    private Rect lbCountRect;

    // Use this for initialization
    void Start()
    {
        btnEndRect = new Rect();
        starList = new List<GameObject>();

        lbCountRect = new Rect();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //
            Vector3 pos = Input.mousePosition;
            pos.x /= Screen.width;
            pos.y /= Screen.height;

            //
            GameObject g = (GameObject)Instantiate(starPrefab, pos, Quaternion.identity);
            starList.Add(g);
        }
    }

    void OnGUI()
    {
        //顯示統計星星的個數
        lbCountRect.x = 0;
        lbCountRect.y = Screen.height - 30;
        lbCountRect.width = 100;
        lbCountRect.height = 30;
        
        GUI.Label(lbCountRect, starList.Count.ToString(), skin.label);

        //結束按鈕
        btnEndRect.x = 0;
        btnEndRect.y = 0;
        btnEndRect.width = 100;
        btnEndRect.height = 45;
        //
        if (GUI.Button(btnEndRect, "結束", skin.button))
        {
            foreach(GameObject g in starList)
            {
                Destroy(g);
            }
            starList.Clear();
            //
            StartMenu menu = gameObject.GetComponent<StartMenu>();
            menu.enabled = true;
            this.enabled = false;
        }

    }
}

在這段程式碼裡,先定義一個Rect的私有變數lbCountRect,用來儲存標籤所在的位置,然後在Start()函式初始化變數lbCountRect,在函式OnGUI()增加設定標籤的位置,同時GUI.Label把它顯示出來。這時點選執行之後可以看到統計星星的個數,如下圖:

但是這時可以看到,這個計數顯示有點難看,那麼就來美化一下吧。由於它是採用skin.label定義的,那麼只要設定GUISkin類,就可以改變標籤的樣式,因此如下圖進行編輯:

經過上面修改標籤顯示的背景圖片,同時把字型的對齊方式修改為居中顯示,這時再運行遊戲,就顯示如下:

到這裡,就把星星遊戲的建立過程完全做完了。在這個過程裡,經歷介面文字顯示、按鈕顯示、自定義按鈕、自定義的介面樣式管理、建立星星的預製件、遊戲開始選單、遊戲開始選單切換到遊戲迴圈、退出遊戲迴圈返回開始選單,把這些學完之後,就可以自己去嘗試不同的小遊戲開發了。

https://blog.csdn.net/caimouse/article/details/51749579