3D遊戲編程——血條製作

血條(Health Bar)的預製設計。具體要求如下

  • 分別使用 IMGUI 和 UGUI 實現
  • 使用 UGUI,血條是遊戲對象的一個子元素,任何時候需要面對主攝像機
  • 分析兩種實現的優缺點
  • 給出預製的使用方法

IMGUI

用scrollabr製作血條:

GUI.HorizontalScrollbar(new Rect(20, 20, 200, 20), 0.0f, bloodValue,0.0f, 1.0f, GUI.skin.GetStyle("HorizontalScrollbar"));

控制血量則使用Mathf.Lerp(min,max ,c):

bloodValue = Mathf.Lerp(bloodValue, tmpValue, 0.01f);

完整代碼:

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

public class IMGUI : MonoBehaviour
{
        public float bloodValue;

    private float tmpValue;

    void Start()
    {
        tmpValue = 0.0f;
        bloodValue = 0.0f;
    }

    void OnGUI()
    {    
        //點擊加血
        if (GUI.Button(new Rect(250, 20, 40, 20), "+"))
        {
            tmpValue = 1.0f;
        }

        //點擊減血
        if (GUI.Button(new Rect(250, 50, 40, 20), "-"))
        {
            tmpValue = 0.0f;
        }

        bloodValue = Mathf.Lerp(bloodValue, tmpValue, 0.01f);

        GUI.color = Color.red; //血條,設置爲紅色
        GUI.HorizontalScrollbar(new Rect(20, 20, 200, 20), 0.0f, bloodValue,0.0f, 1.0f, GUI.skin.GetStyle("HorizontalScrollbar"));

    }
}

UGUI

遊戲對象使用一個cube,血條用Slider實現,結構如下:
在這裏插入圖片描述
對Slider的設置:
在這裏插入圖片描述
Max Value設置爲100 。

Fill的顏色改爲紅色:
在這裏插入圖片描述
Canvas的設置:
在這裏插入圖片描述
Slider的縮放比例:
在這裏插入圖片描述
實現血條一直面對主攝像機,只需在Canvas上掛載一個腳本:

    void Update()
    {
        transform.rotation = Camera.main.transform.rotation;
    }

優缺點

IMGUI

優點是實現簡單,比如繪製一個控件,只需要GUI.Lable()、GUI.Button()這樣即可,不需要使用UI組件,很容易上手。
缺點是不利於佈局,在協調對象之間的位置關係的時候會很麻煩,這樣維護起來也會很困難。還有不支持可視化,性能低下。

UGUI

優點是可視化,UGUI的控件是以“遊戲對象”的形式存在與遊戲場景中,這樣直觀易於使用,直接可以在Scene視圖中編輯大小、位置、旋轉角度、縮放等等,不需要手動寫任何代碼。效率也比較高。
缺點是比較難,學習成本高。

預製的使用方法

把對象拖進Perfabs文件夾,就可以得到預製,之後就可以直接拖出來用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章