遊戲製作之路(37)顯示統計星星的個數
阿新 • • 發佈:2019-01-02
在前面已經實現從開始選單到進入遊戲,也實現了從遊戲主迴圈退出到開始選單,但是在玩這個遊戲時,點選一下就產生一個星星,那麼怎麼樣才能像別的遊戲那樣實現計分,比如計算有多少個星星,並把它顯示在遊戲介面上面。這次就來解決這個問題,要想在遊戲介面上顯示星星的個數,那麼就得先在介面上建立一個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類,就可以改變標籤的樣式,因此如下圖進行編輯:
經過上面修改標籤顯示的背景圖片,同時把字型的對齊方式修改為居中顯示,這時再運行遊戲,就顯示如下:
到這裡,就把星星遊戲的建立過程完全做完了。在這個過程裡,經歷介面文字顯示、按鈕顯示、自定義按鈕、自定義的介面樣式管理、建立星星的預製件、遊戲開始選單、遊戲開始選單切換到遊戲迴圈、退出遊戲迴圈返回開始選單,把這些學完之後,就可以自己去嘗試不同的小遊戲開發了。