Unity3D——使用UGUI為角色新增名字和血條
轉載http://www.jianshu.com/p/a9fd13594f18
學習Unity3D有一段時間了,龐大的U3D系統可能只學了一些皮毛。最近做東西時又要為怪物製作血條,但一時間竟然忘記了該怎麼弄,於是翻翻以前的專案,同時在這裡記下來,作為學習參考。
在這裡我使用的是之前學習的時候自己做的一個官方案例《噩夢射手》的加強版本作為參考素材,而UGUI是unity4.6及以上版本才有的功能。那麼,話不多說(阿蠢:=_=你已經說了很多了...)
首先,我們開啟Unity3D,在自己的專案中建立一個角色物件,可以用cube之類的代替。這裡我放置了3個怪物物件
那麼,接下來,就是給每個角色新增一個Canvas元件,選中角色物件,右鍵—UI—Canvas,讓Canvas作為角色子物體,此時,你應該看到一個充滿遊戲介面的Canvas,太大了……(阿蠢:啪!這特麼不是廢話麼!)別急別急,馬上解決。我們選中Canvas,將Canvas中的Canvas元件的Render Mode設為World Space,再將其Transform屬性的Width和height分別設定為20,10(阿蠢:憑什麼聽你的,我的屬性值我自己調!)經過調整,這時候應該就好多了吧。不過記得也要調整Canvas的位置。
關於Canvas呢,是我們在建立UGUI物件的時候,必須有的一個東西,如同畫畫,除了畫筆,也要有畫布才能在上面作畫,同時我們建立UGUI物件的時候,也會生成一個EventSystem物件,伴隨Canvas的一起出現,要多瞭解的話,哼哼,去百度吧(阿蠢:不知道就是不知道,沒事你裝什麼裝-_=!)
那麼,現在,就是開始正式的建立血條了。我們再Canvas下面建立一個Slider物件,右鍵-UI-Slider,這個沒忘吧(阿蠢:你當所有人都白痴嘛!!)那麼,現在是不是又有一個碩大的Slider呢?老樣子,選中Slider,調整Slider的Scale大小,X:0.02,Y:0.01
這裡,我們看到有個Directon來控制血條的方向,Min Value表示最小值,Max Value表示最大值,我們先如圖設定為100,此時Value的滑塊跑到最左邊去了,那麼我們這裡滑動滑塊,就可以調整當前的血量值,來看看有沒有效果?
注意,我們這裡如果添加了能移動的指令碼的話,會發現,當角色物件,旋轉的時候,我們的血條居然也跟著轉了!(阿蠢:我被你騙了,故事不是這樣的!)因為Canvas是作為物件的子物體,它的位置是基於父節點的變化而變化,那麼這裡,我們給Canvas新增一個指令碼,就叫做EnemyUiHP吧(阿蠢:我偏不,你個騙子!)。要寫的內容也不多
我們再Update函式裡面添加了這樣一句話,是為了讓整個Canvas一直面朝著我們的攝像機,這樣無論角色再怎麼旋轉,我們從攝像機的角度看,面向我們的(指令碼中的using UnityEngine.UI是在需要再程式碼中使用UI物件的時候必須要的一個引用,這裡多餘了)。試試看吧(阿蠢:萬一又不對了呢?)。
當然,這裡的血條還不完全算是血條,因為沒有捱打,沒有受傷,不會變化,怎麼當一個合格的血條君呢?那麼,在這裡做一個簡單的控制血條的方法,當我們的角色在收到傷害的時候,血量要減少,這是,我們可以新增這樣幾句程式碼
這裡定義了hpUI物件為Slider元件,currentHealth為當前血量,我們在指令碼初始化物件時,如再Start()或者Awake()函式中設定血量的初始值,可以先定義一個最大血量值:public float maxHealth=100, 在 Start() 中寫入 currentHealth=maxHealth;以及hpUi.maxValue=maxHealth;這樣使得血量的最大值就等於我們在指令碼中的設定的最大值,之後修改也方便。而如上圖在自己定義的受傷的函式中寫入hpUI.value=currentHealth。這樣當我們的當前血量減少的時候,血條的值也在跟著變化。注意,這裡我們使用的hpUI物件是Slider物件,也就是UI物件,這裡必須在指令碼前引用上面說到的using UnityEngine.UI,否則報錯(阿蠢:簡直可怕!)
以上就是我們寫使用UGUI編寫血條的方法了。雖然廢話很多,但是為了清晰且方便剛學的小夥伴理解,就見諒了(阿蠢:行行行,原諒你了。)那麼這裡就給大家看看我自己做的最終效果版本,同樣的方法給角色添加了名字(良辰、美景、奈何天),以及同樣使用UGUI製作的小地圖等。那麼,1,2,3——
有不對的地方 or 有問題 or 有經驗 or 有建議的可以多多交流~(阿蠢:別逗了,你這麼懶,還會有力氣和別人交流?)
文/Wei_Boom(簡書作者)
原文連結:http://www.jianshu.com/p/a9fd13594f18
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。