iTweenでSystem.Actionを使う方法

iTweenはとても便利なAssetですが、onupdateoncompletedelegateが使えないという点が少し不便だったので調べてみたところ簡単に変更できるようです。

//throw an error if a string wasn't passed for callback:
if (tweenArguments[callbackType].GetType() == typeof(System.String)) {
  target.SendMessage((string)tweenArguments[callbackType],(object)tweenArguments[callbackType+"params"],SendMessageOptions.DontRequireReceiver);
}else{
  Debug.LogError("iTween Error: Callback method references must be passed as a String!");
  Destroy (this);
}

という部分を

//throw an error if a string wasn't passed for callback:
if (tweenArguments[callbackType] is Action<object>) {
  ((Action<object>)tweenArguments[callbackType]).Invoke((object)tweenArguments[callbackType + "params"]);
}else{
  Debug.LogError("iTween Error: Callback method references must be passed as a String!");
  Destroy (this);
}

と書き換えます。

すると、次のような感じでonupdateが使えるようになります。

Hashtable ht = new Hashtable ();
ht.Add ("from", 0.0f);
ht.Add ("to", 1.0f);
ht.Add ("onupdate", (System.Action<object>)(v => {
  Debug.Log("v = " + (float)v);
}));
iTween.MoveTo(gameObject, ht);

便利です。

リンク

Specifying a delegate for the value of onupdate in iTween. – Unity Answers
https://answers.unity.com/questions/490719/specifying-a-delegate-for-the-value-of-onupdate-in.html

関連記事

iTween
Unityを使っている人であれば、1度は聞いたことがあるかもしれない有名なアセット「iTween」です。 個人的によく使っているのはValueTo。 Hashtable ht = new Hashtable(); ht.Add("from", 0.0f); ht.Add("to", 1.0f); ht.Add("time", 1.0f); ht.Add("onupdate","myU...

UnityでScreenshotMovieを作成するスクリプト
Unityで作ったゲームのScreenshotMovieを作成できるスクリプト ScreenshotMovie - Unify Community Wikihttp://wiki.unity3d.com/index.php/ScreenShotMovie 作成されるファイルはPNG形式の連番画像ファイルになるので、FFmpegや他の動画編集ソフト等で動画に変換してください。 F...

iTweenで使えるEaseTypeの一覧
iTweenで使えるEaseTypeはRobert Penner's open source easing equationsを元にしているそうです。 使えるTypeの一覧 easeInQuadeaseOutQuadeaseInOutQuadeaseInCubiceaseOutCubiceaseInOutCubiceaseInQuarteaseOutQuarteaseInOutQua...

Unityの画面を録画するアセット
以前、Unityで作ったゲームのScreenshotMovieを作成できるスクリプトを試してみましたが、もう少し本格的に録画したい場合は「Unity Recorder」というアセットが良さそうな感じでした。 GitHub - Unity-Technologies/GenericFrameRecorder: Recorder framework that allows recording a...

動的にNavMeshを生成できるUnityのアセット
UnityでNavMesh使っていますか? とても便利なツールですが、予めBakeしておく必要があり、動的に生成するマップで使い難いという難点がありました。そこで悩んでいたところ、動的に生成したMeshでも利用可能なアセットが公開されているそうです。 GitHub - Unity-Technologies/NavMeshComponents: High Level API Compo...

DOTween
「DOTween」というUnityのアセットを使ってみました。 DOTween (HOTween v2)http://dotween.demigiant.com/index.php これまでTween系はiTweenを使っていたのですが、DOTweenに乗り換えてみようかなと思っています。 有料版「Pro」と無料版がありますが、自分でスクリプトを書いていく場合は無料版でも大丈夫...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です