Matlives ~マットリブス~ 2代目

Unityでゲーム作ったり遊んだり。細かい備忘録も兼ねて書いてます

uGUIでスコアをだんだん変化させた話。

事の発端は"数時間"前ー

(●)<あ~StackShotのアプデしなきゃ

(●)<ただ点数だけじゃ面白くないなぁ・・・

(^)<そうだ!点数を回そう!!

 

この処理作るだけで1、2時間掛かった・・・

目次

 

スコア(数値)をだんだん変化させる

イメージは某Bemaniゲーから

f:id:superokp:20170705185935g:plain

こんな感じのカウンターが作りたい。

とりあえずググる

参考できる記事が無い

これは一体・・・

とりあえず作ってみる

現状(例:0→10000)

0→10000(一瞬で数値が変わる、間に中間値を噛ませたい)

目標

0→2500→5000→7500→10000(カウンターの変化する回数・時間も指定したい)

 

作る。(めっちゃ汚くてごめんなさい)

//予めUnityEngine.UIおよびText CountTextを作っておく// 

///呼び出すときはStartColoutine(Counter(a,b,c,d));で//

//aに秒間のカウンターの変化回数、bに変化前の値、cに変化後の値、dにカウンターの回っている時間を入れる//

 

IEnumerator Counter(int CountPerSeconds,int OldNum,int CurrentNum,int LoopTIme)
{
int FinishNum = (int)((CurrentNum - OldNum) / CountNum*LoopTime);//一回辺りの増加量計算//

for(int i=0;i<LoopTime;i++)

{
for (int i = 0; i < CountPerSeconds; i++)
{
OldNum += FinishNum;

Text.text=OldNum.ToString();//一回分のカウンタが回る//
yield return new WaitForSeconds(1f / (float)CountPerSeconds);
}

}
OldNum = CurrentNum;//誤差を潰す//

Text.text=OldNum.ToString();//正確な値を描画//
}

仕組み

ただのコルーチンです。

WaitForSeconds()の計算のキャストが汚いのはご愛嬌。

完成

 とりあえずできた。

もっと賢い作り方もあるだろうけど。(あったら教えて)

f:id:superokp:20170705231142g:plain

ちょっと早いかもだけどしっかり回っていることを確認!

できた~

まとめ

動きのある文字の変更はゲームの演出に大きく貢献しますね!

けどここまでするとStackShot、WebGLじゃあスペック不足を感じるなぁ・・・

ボリューム増やしてSteamにだそうかなぁ?