1. 程式人生 > >U3D基礎之實現技能冷卻(圖形加冷卻數字)

U3D基礎之實現技能冷卻(圖形加冷卻數字)

如果對你有幫助的話,請做一顆蒲公英,讓知識的種子隨風飄蕩植入人心。
UGUI做為U3D之中十分靈活高效的功能深受大家喜愛,這裡給大家精講一期如何用U3D實現技能的冷卻以及數字變化,先來看一下效果!

圖形冷卻和技能冷卻數字

下面進入正文,直接上程式碼段,網上找的素材給大家演示的,我的指令碼掛在一個叫GameController的空物體上,如果你掛在其他地方請酌情修改程式碼。程式碼主要實現功能有:1.實現點選按鍵,轉動冷卻動畫。2.用數字顯示冷卻剩餘時間。程式碼段中詳細的註釋了每個功能,小白都能輕鬆入手。如果對你有幫助的話,請做一顆蒲公英,讓知識的種子隨風飄蕩植入人心。

    Image image; //因為指令碼掛在空物體上作為遊戲控制器,所以要在全域性變數獲取冷卻的圖片
Text imageText; //因為指令碼掛在空物體上作為遊戲控制器,所以要在全域性變數獲取冷卻數字的文字 GameObject s; //先隨意用一個GameObject型別型別的s來控制冷卻頁面的顯示與不顯示(剛開始肯定是不顯示的 這裡用setActive方法) bool isCD = false; //我們做一個開關,後面用來判斷這個技能是否在冷卻(冷卻的時候不能點選,非冷卻時間可以點選) public float coldTime = 3.0f; //首先我們設定一個冷卻時間,時間多少你高興就好 public float timer = 0f; //這裡我們設定一個計時器,用來計算冷卻剩餘時間
void Start() { image = GameObject.Find("AttackCD").GetComponent<Image>();//首先我們通過查詢叫做AttackCD的物件獲取它身上的Image元件(直接用GameObject查詢優化很差,建議用tag或者transform.find) imageText = GameObject.Find("CDText").GetComponent<Text>();//獲取物件子物體文字的Text元件 s = GameObject.Find("CDText"
);//s後面用來控制頁面的隱藏或顯示 s.SetActive(false);//剛開始把冷卻圖片隱藏(畢竟沒有遊戲上來技能就是灰色的 肯定是亮色的) image.fillAmount = 0;//這個fillAmount是u3d的Image類裡邊的一個屬性控制填充的方式(1的時候滿填充 0的時候0填充),上來先初始化變為0填充 } void Update() { if (Input.GetKeyDown(KeyCode.Q)) { isCD = true;//剛開始isCD是false是沒有CD的,當我們按下Q當做技能使用的時候,開始有CD,這個時候把IsCD設定為true開始執行下面程式碼 //顯示CD數字 s.SetActive(true); //CD開始的時候要把隱藏的頁面變為顯示,所以設定為TRUE } if(isCD) { timer += Time.deltaTime; //計時器隨時間的增加而增加 image.fillAmount = (coldTime - timer) / coldTime; //(冷卻時間-計時器)除以冷卻時間就是從1到0的過程。當冷卻時間為3 計時器為0的時候 這個值則為1,然後逐漸減小到0 Debug.Log(coldTime - timer);//測試文字內容 imageText.text = (coldTime - timer).ToString("f0");//通過.text調出文字內容,但是string格式,我們的coldTime - timer是float型,需要ToString強轉。 //ToString中的引數 “f0” 代表捨棄小數 if (timer >= coldTime)//判斷條件 當計時器時間大於等於冷卻時間的時候,說明冷卻一輪結束 { image.fillAmount = 0;//初始化置0 準備下一次 timer = 0;//初始化置0 準備下一次 isCD = false;//初始化置false 準備下一次 //隱藏CD數字 s.SetActive(false);//重新隱藏冷卻數字顯示功能 } } }