unity2D學習(14)血條顯示、Canvas中Render Mode的三種模式介紹

1 血條素材處理

分割處理:對上一章畫出來的血條圖片做分割處理

  • 整理素材格式:
  1. Sprite Mode選擇Multiple:因爲一張圖片包含多個素材。
  2. Pixels Per Unit單位像素爲16:與之前遊戲的素材統一。
  3. Filter Mode選擇爲像素:因爲素材是像素類型的。

  • 分割素材:點擊上圖裏面的Sprite Editor,選擇自動切割素材,再通過拖動切割選區來調整,最後記得Apply。

  • 效果

2 UI顯示血條

效果:在敵人的頭頂上顯示血條。

UI顯示血條:

  • 在敵人下面新建一個Canvas畫布。

  • 設置Canvas的參數。
  1. 位置X Y Z全部設置爲0:爲了讓Canvas中心位置在Crab(敵人)上,方便後面拖動血條到敵人的頭上。
  2. Render Mode設置爲World Space:選爲World Space可以不用對應屏幕,會被作爲一個3D物體來處理。(最後會補充RenderMode三種模式的介紹)
  3. Event Camera添加爲主攝像機Main Camera。
  4. Sorting Layer選擇到Player:渲染層級和遊戲角色在同一層。

  • 在Canvas下新建兩個Image,分別改名叫WhiteHp、RedHp,用來放兩個血條圖片。

  • 給WhiteHp和RedHp添加上之前切割好的圖片,設置好參數。
  1. Image Type設置爲Filled:因爲希望通過Fill Amount來控制血條佔百分比,以此來控制血條變動顯示。
  2. Fill Method設置爲Horizontal:百分比控制方向是縱向的。

  • 拖動血條到敵人的頭上,並重疊WhiteHp和RedHp,RedHp在WhiteHp的上面。

3 代碼控制血條

給在Crab下面新建的Canvas畫布添加一個script腳本。

代碼思路:通過控制紅色血條的Fill Amount控制血條佔百分比,來修改血條在UI上的顯示。

HP代碼:

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

using UnityEngine.UI;

public class HpController : MonoBehaviour {

    private Image hpImage;
    private float hpMax=100f;//最大血量
        
	void Start () {
        hpImage = GameObject.Find("RedHp").GetComponent<Image>();//獲取ui對於的text
    }
    public void HpChange(float newHp)
    {
        hpImage.fillAmount = newHp / hpMax;
    }
}

 

然後在敵人受傷時調用HpController裏面的HpChange函數就行了。

4 效果

5 補充Canvas中Render Mode的三種模式介紹

三種模式:Screen Space-Overlay、Screen Space-Camera和World Space。

  • Screen Space-Overlay:Canvas作爲2D圖像,永遠處於屏幕的最前方,即使沒有相機也能夠看到內容。如果畫布發生大小改變,也能夠自動改變尺寸來匹配屏幕。
  • Screen Space-Camera:可以指定攝像機,和Screen Space-Overlay類似,但是有物體比Canvas更加接近攝像機時會顯示在前面,反之則會被Canvas遮擋。
  • World Space:可以指定攝像機,把Canvas視爲一個3D物體來處理,可以設置位置和大小。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章