こんにちは〜
今日は、たまに使うけどよくやり方を忘れる、文字色のアニメーションのやり方です(笑)
ちなみに、特殊なコンポーネントを使って〜とかじゃなくて、C#で力づく()で動かすやり方ですので、楽してやりたい人とかにはもしかしたら他のやり方があるかもです・・・
ところで、text内で文字色を変える方法は知っていますか?
Paragraph→colorでも変えることは出来ますが、一部分だけ変えようと思えばうまく出来ません。
そこで、text内に、
「<color=#FF0000>テキスト</color>」
と入力することで、<color>タグで囲まれた文字は色が変わります。
これを利用して、文字色をアニメーションさせようと思います!
・・・とは言っても、やる事は文字色の指定だけ。
でもその指定がちょっと面倒なのです(16進数が必要だから。)
という事で、まずは10進数を16進数にする方法を調べちゃいましょ〜( ´ ▽ ` )ノ
int a; a.ToString( "X2" );
ToString内のXが、16進数を大文字で出力、2が桁数、だそうです。
次にアニメーションさせるために、色の数値を変化させたいと思います。
ちょっと面倒なので、関数を作ってしまいますね(^_^;)
string ColorValue ( Color Before, Color After, float Value ) {
int r = Mathf.FloorToInt(Before.r * (1 - Value) + After.r * Value);
int g = Mathf.FloorToInt(Before.g * (1 - Value) + After.g * Value);
int b = Mathf.FloorToInt(Before.b * (1 - Value) + After.b * Value);
int a = Mathf.FloorToInt(Before.a * (1 - Value) + After.a * Value);
return "#" + r.ToString("X2") + g.ToString("X2") + b.ToString("X2") + a.ToString("X2");
}
Before には最初の色、Afterには最終的な色、Valueには変化の経過時間(0 〜 1)を入れます。
それで、最後のreturnで色の値をstring型で返します。
ところで、aは色の透明度で、フェードイン、フェードアウト的な表現もできるようになります。
あとはこれを使えば、もう完成ですね(*≧∀≦*)
使い方としては・・・
(前略)
//テキストUI
Text text;
//表示させるテキスト
string tex = "表示させるテキストext...";
//最初の色。例で赤を指定しています
Color first = new Color(255, 0, 0);
//終わりの色。青を指定しています
Color last = new Color(0, 0, 255);
//アニメーションさせる為の時間用
int count = 0;
// Update is called once per frame
void Update () {
if (count <= 60) {
//テキストを表示させる
text.text = "<color=" + ColorValue(first, last, count / 60f) + ">" + tex + "</color>";
//時間を1つ進める
count++;
}
}
あれ・・・理解できます?これ(汗)
まぁとりあえず、今回はColorValue関数をメモ代わりにでも書きたかっただけなのです(笑)
分からなかったら、下のコメント欄にでも書いてください(>人<;)
では、またね〜( ´ ▽ ` )ノ
↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓