前回の記事の訂正
前回、Crunch圧縮の定義を外す手順で、
「Use Crunch Compression」のチェックボックスをチェック⇒チェックを外す
と書きましたが、そのあとに
Unityの再起動をする
という手順が必要でした。再起動しないと設定が有効にならないみたいです。
ここから本題
ゲーム中の演出で、下のような
アイコンが徐々に現れるアニメを作ろうとした場合、
アイコンのImage(上の場合は矢印のImage)のImageTypeをFilledにしてFillAmountの値をUpdate関数内で徐々に大きくしていくのが一般的かと思いますが、それをiTweenのValueToを使って実現しようというお話。
まずはValueToを実行する関数
GameObject TargetTweenObj; // アニメ動作させたいゲームオブジェクト /// <summary> /// 矢印アニメ動作開始 /// </summary> private void TweenAnimationStart() { // ValueToの開始 Hashtable hash = new Hashtable(){ {"from", 0.0f}, {"to", 1.0f}, {"time", 1.0f}, {"delay", 0.0f}, {"easeType",iTween.EaseType.linear}, {"loopType",iTween.LoopType.loop}, {"onupdate", "OnUpdateArrow"}, {"onupdatetarget", gameObject}, }; iTween.ValueTo(gameObject, hash); }
ValueToを実行すると"onupdate"で指定した関数に"from"から"To"まで徐々に変化させた値が引数として渡されてくるので、それを使ってfillAmountの値を変更します。
/// <summary> /// iTweenによるValueToのコールバック /// </summary> /// <param name="nextValue"></param> void OnUpdateArrow(float nextValue) { // 矢印オブジェクトのImage取得 Image TargetImage = TargetTweenObj.GetComponent<Image>(); // 矢印オブジェクトのfillAmount更新 TargetImage.fillAmount = nextValue; }
今回はValueToの"loopType"にloopを指定しているので、ループを止める場合には以下の関数をコールします。
/// <summary> /// 矢印アニメ動作停止 /// </summary> private void TweenAnimationStop() { iTween.Stop(this.gameObject); Image TargetImage = TargetTweenObj.GetComponent<Image>(); TargetImage.fillAmount = 1.0f; }
で、これを実際のゲーム画面(開発中)で使用してみるとこんな感じ
iTweenを使用するとアニメの動作時間やループの設定等が簡単に行えるので以外と有用な方法かと思います。