Unity3D UI Text得分?jǐn)?shù)字增加的實(shí)例代碼
Unity3D UGUI Text得分?jǐn)?shù)字增加 代碼
一、首先在Hierarchy中創(chuàng)建Text,并綁定腳本。
using UnityEngine; using System.Collections; using UnityEngine.UI; **//導(dǎo)入資源庫(kù)** public class Score : MonoBehaviour { public static Text txt; **//定義靜態(tài)變量名以用于其他腳本內(nèi)的引用** public static float x = 0; void Start () { txt = GameObject.Find ("Text").GetComponent<Text> (); } }
二、在確定變量名指定的組建后,對(duì)得分時(shí)情況進(jìn)行判斷。
這里進(jìn)入判斷綁定剛體是否碰撞的腳本。
using UnityEngine; using System.Collections; public class collision2 : MonoBehaviour { public GameObject bullet; void OnCollisionEnter(Collision col) **//當(dāng)剛體碰撞開(kāi)始時(shí)** { if (col.gameObject.name.Equals ("Bullet(Clone)")) { Instantiate (bullet,col.transform.position,Quaternion.identity); Destroy(col.gameObject); Score.x += 1; **//剛體碰撞結(jié)束后得分加1** Score.txt.text = "Score : " + Score.x; //在text文本中顯示Score : x } }
總結(jié):
這里的代碼示例是以制定剛體碰撞的開(kāi)始時(shí),進(jìn)行得分判斷。當(dāng)Bullet(Clone)與腳本綁定的剛體碰撞,便得分?jǐn)?shù) X+1 ,并在Score腳本中的txt中加上轉(zhuǎn)換成文本類(lèi)型后的X。
補(bǔ)充:Unity3D 數(shù)字逐漸增加,一個(gè)數(shù)字動(dòng)態(tài)變化到另一個(gè)數(shù)字(使用協(xié)程)
首先實(shí)現(xiàn)上述功能,需要使用“協(xié)程”這個(gè)功能。
協(xié)程
協(xié)程:控制代碼等到特定的時(shí)機(jī)后再執(zhí)行后續(xù)步驟.
先看Unity3D的函數(shù)執(zhí)行順序圖
官網(wǎng)鏈接:https://docs.unity3d.com/Manual/ExecutionOrder.html
以上協(xié)程函數(shù)定義:(yield 開(kāi)頭的便是)
yield null:協(xié)程將在下一幀所有腳本的Update執(zhí)行之后,再繼續(xù)執(zhí)行.
yield WaitForSeconds:協(xié)程在延遲指定時(shí)間,且當(dāng)前幀所有腳本的 Update全都執(zhí)行結(jié)束后才繼續(xù)執(zhí)行.
yield WaitForFixedUpdate:協(xié)程在所有腳本的FixedUpdate執(zhí)行之后,再繼續(xù)執(zhí)行.
yield WWW:協(xié)程在WWW下載資源完成后,再繼續(xù)執(zhí)行.
yield StartCoroutine:協(xié)程在指定協(xié)程執(zhí)行結(jié)束后,再繼續(xù)執(zhí)行.
WaitForSecondsRealtime:與WaitForSeconds類(lèi)似,但不受時(shí)間縮放影響.
WaitWhile:當(dāng)返回條件為假時(shí)才執(zhí)行后續(xù)步驟.
使用方法:
void Start () { StartCoroutine(A()); } IEnumerator A() //加粗的必須要寫(xiě),函數(shù)名自己定義 { //yield return new WaitForSeconds(0.1f); //這里可以用上述的函數(shù) StopCoroutine(A()); }
PS:注意如果需要停停止其中某個(gè)協(xié)程,可使用StopCoroutine。但在使用時(shí),你需要注意一點(diǎn),停止協(xié)程的方式要與開(kāi)啟協(xié)程的方式一致。StopCoroutine(“A”)必須與StartCoroutine(“A”)成對(duì)使用,與StartCoroutine(A())一起使用則完全無(wú)效。
逐漸增加的實(shí)現(xiàn)
首先需要在unity世界里增加一個(gè)text,然后text加如下腳本
代碼如下:
int max; //最終值 int min; //初始值 int result = 0; public int change_speed = 5; //加的次數(shù) // Use this for initialization void Start () { StartCoroutine(Change()); } IEnumerator Change() { int delta = (max - min) / change_speed; //delta為速度,每次加的數(shù)大小 result = min; for(int i = 0;i<change_speed;i++) { result += delta; this.GetComponent<Text>().text = result.ToString(); yield return new WaitForSeconds(0.1f); //每 0.1s 加一次 } this.GetComponent<Text>().text = max.ToString(); StopCoroutine(Change()); }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
c#使用htmlagilitypack解析html格式字符串
這篇文章主要介紹了c#使用htmlagilitypack解析html格式字符串的示例,需要的朋友可以參考下2014-03-03C#統(tǒng)計(jì)字符串里中文漢字個(gè)數(shù)的方法
這篇文章主要介紹了C#統(tǒng)計(jì)字符串里中文漢字個(gè)數(shù)的方法,本文通過(guò)正則實(shí)現(xiàn)統(tǒng)計(jì)出一段字符串里中文字?jǐn)?shù),需要的朋友可以參考下2014-08-08通過(guò)LinQ查詢(xún)字符出現(xiàn)次數(shù)的實(shí)例方法
這篇文章主要介紹了通過(guò)LinQ查詢(xún)字符出現(xiàn)次數(shù)的實(shí)例方法,大家參考使用吧2013-11-11UGUI實(shí)現(xiàn)隨意調(diào)整Text中的字體間距
這篇文章主要為大家詳細(xì)介紹了UGUI實(shí)現(xiàn)隨意調(diào)整字體間距的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03