uGUIでスコアをだんだん変化させた話。
事の発端は"数時間"前ー
(●)<あ~StackShotのアプデしなきゃ
(●)<ただ点数だけじゃ面白くないなぁ・・・
(^)<そうだ!点数を回そう!!
この処理作るだけで1、2時間掛かった・・・
目次
スコア(数値)をだんだん変化させる
イメージは某Bemaniゲーから
こんな感じのカウンターが作りたい。
とりあえずググる
参考できる記事が無い
これは一体・・・
とりあえず作ってみる
現状(例: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()の計算のキャストが汚いのはご愛嬌。
完成
とりあえずできた。
もっと賢い作り方もあるだろうけど。(あったら教えて)
ちょっと早いかもだけどしっかり回っていることを確認!
できた~
まとめ
動きのある文字の変更はゲームの演出に大きく貢献しますね!
けどここまでするとStackShot、WebGLじゃあスペック不足を感じるなぁ・・・
ボリューム増やしてSteamにだそうかなぁ?