Unity UGUI Canvas 使用Slider制作角色血條


最近課程實訓選修Unity,講解的是Unity官方案例——SpaceShoot,培訓無聊,便想着給游戲角色制作一下血條,以此增加游戲的可玩性。

Unity版本:5.4.1

案例模版:太空射擊

原文作者:茄閣雲雲

原文連接:http://www.cnblogs.com/vmoor2016/p/6044941.html

 

把一個大象裝進冰箱里需要三步:①把冰箱門打開;②把大象塞冰箱里;③關上冰箱門。

那么制作一個角色的血條需要幾部呢?在這里也划分為三步:①制作血條;②擺放血條;③操作血條。

下面就來給大家分享下血條的制作步驟。

 第一步:制作血條

  • 選中游戲對象,在游戲對象下創建子物體Canvas,步驟:選擇游戲物體-右鍵-UI 選擇創建

  Canvas;

  • 創建血條,步驟:選擇創建好的Canvas,然后,右鍵-UI 選擇創建Slider;

  此時在游戲Scene視圖中便可以看到一個白框即Canvas畫布,還有血條原型Slider。

  展開Slider(如下圖第二張)就可以發現組成滑動條的三個組件:

  Background,背景顏色;Fill Area,填充顏色;Handle SliderArea:滑動柄。

  

  為了方便看到制作效果,現在修改Slider屬性,選中Slider,在Inspector面板的組件

  Slider(Script)里修改Min Value=0,Max Value=10,Value=10。現在開始制作血條:

  • 去掉Handle(滑動柄):選擇Handle SliderArea,按Delete鍵刪除(當然也

  可以在Inspector面板中取消選中該物體),然后就可以發現圓圓的滑動柄消失了。

  • 修改背景色與填充色:選擇FillArea下的Fill,在Inspector面板下找到Image(Script)組件,

  在其中可以修改Slider的填充色,同樣選擇Background修改背景色。

  • 調整Fill Area(填充區域):上一步執行后發現,雖然Slider的當前值Value等於Max Value

  ,但血條並未被填滿。現在選擇Fill Area在Inspector面板中修改Rect Transform中個屬性,

  將Left、Right的值都設為0(見下圖),至此一個簡單的血條就制作完成了。

     

    

第二步:擺放血條

  到目前為止血條還沒有出現在相機視的野里,這是由於Canvas(畫板)的屬性設置原因,在

  Inspector面板下查看Canvas渲染屬性(Render Mode)。

    

  渲染方式有三種,默認的是Screen Space-Overlay。在本步驟后補充會簡單介紹前兩種渲染

  方式,現在先將Render Mode改為World Space(全局)。

  修改后便會發現,Inspector面板中的Rect Transform組件可以修改了。

    

  這就意味着我們可以通過旋轉拖放將血條擺放到合適的位置。具體擺放步驟如下:

  • 修改Canvas的位置,將Pos x,Pos Y設為0;
  • 旋轉Canvas:由於Canvas相當於一個面,所以如果相機從垂直角度拍攝將看不到畫板

  上的任何東西,旋轉Canvas使其正對Main Camera(我這里相機在Y軸垂直向下拍攝,

  故將Canvas繞X軸旋轉了90度),這時大大的血條便在Game場景下出現了。

    

  • 修改Slider尺寸:不用說,這么大的血條肯定要修改下尺寸,在這里推薦使用Scale

  (縮放工具)進行大小修改。當然你也可以通過修改寬高來實現,不過控制不好寬高

  比例將帶來意想不到的效果(不服可以親自嘗試一下)。

  

  • 修改Canvas尺寸:這么小的血條用不了那么大的Canvas畫板,因此將Canvas的大小

  修改為與血條相當即可,這里推薦直接修改寬高,如圖。至此擺放血條的工作都已經完成

  了,可以選中移動工具進行演示,可以發現血條照預期的那樣跟隨角色移動。

  

  下面為補充內容,不感興趣可以跳過。

  補充

  上面提到Canvas的三種渲染模式,在這里再對前兩種進行簡單說明:

  1.Screen Space - Overlay:默認的渲染模式,此模式Canvas位置大小不可改變,但可以通過

  移動父物體來間接改變,Canvas的起始位置就是父物體的位置,大小和設置的顯示屏幕大小

  有關(如下圖1,我這里是600*900),更改不同的顯示大小,Canvas的形狀大小也將會發生

      改變。此模式不需要UI相機,Canvas上的內容將顯示在所有游戲物體之前。

     

  2.Screen Space - Camera:此模式Canvas位置大小不可改變,需要指定UI相機(可以發

  現多出來一個Render Camera,默認是不指定相機的),Canvas畫布大小根據相機視野來

  定,可以將Main Camera掛載到上面觀察效果,畫布上的內容將一直顯示在相機視野里,且

  顯示在所有游戲物體之前。

    

第三步:操縱血條

  關於血條的操作就要用到腳本來控制了。操作很簡單,因此腳本很簡單,感興趣可以查看一下。

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEngine.UI;    //添加UI命名空間
 4 
 5 public class PlayerCollide : Collide {
 6     
 7     public Slider HPStrip;    //添加血條Slider的引用
 8     public int HP;
 9     void Start () {
10         HPStrip.value = HPStrip.maxValue = HP;    //初始化血條
11     }
12     public void OnHit(int damage){
13         HP -= damage;
14         HPStrip.value=HP;    //適當的時候對血條執行操作
15     }
16 }    
View Code

 

  血條制作過程就到此結束了,喜歡的話就頂一下吧。

 

  本文的血條制作過程系作者原創,不足之處歡迎評論指證,尊重原創,轉載請注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM