URL: http://atnd.org/events/34621
@komachireader さんがコメントくださったので、再度GoKitやってみた。
「iTweenで言うところのignoreTimeScaleのようなフラグが無い」
「ポーズ中の画面でTweenを使いたいときがある」
早速、サンプルの「1. Simple Tween」シーンの主なクラスのある「SimpleTween.cs」を見てみた。
・SimpleTween.cs
AwakeのTimeScaleを0にしてみる!
void Awake () { Time.timeScale = 0; }
Goクラスを見てみる。
→それにしても英単語1つをクラス名にして強気だ。他と被りそうだわな。
・Go.cs
#region Monobehaviour private void Update () { if (_tweens.Count == 0) return; handleUpdateOfType (UpdateType.Update, Time.deltaTime); } private void LateUpdate () { if (_tweens.Count == 0) return; handleUpdateOfType (UpdateType.LateUpdate, Time.deltaTime); } private void FixedUpdate () { if (_tweens.Count == 0) return; handleUpdateOfType (UpdateType.FixedUpdate, Time.deltaTime); } #endregion
Update, LateUpdate, FixedUpdateのUpdate3兄弟全部使ってるwwww
UpdateはTimeScaleの影響をうけませんね。
ちなみに、regionってなんだ?って調べたらコードを折りたためるだけ?
http://msdn.microsoft.com/ja-jp/library/9a1ybwek(v=vs.80).aspx
「#region Monobehaviour」から「#endregion」までを折りたためる。
これが↓
こうなる↓
これもアドベントカレンダーのために置いといても良かったかも?
よってUpdateのとこをコメントアウトすればTime.timeScaleが0だと止まる。
private void Update () { if (_tweens.Count == 0) return; // handleUpdateOfType (UpdateType.Update, Time.deltaTime); }
じゃあ、Gameシーン中の左のトグルはなんですか?
↓こいつをかえるときちんとスピードに影響が出ます。
気になってサンプルコードの親クラス「BaseDemoGUI.cs」のOnGUI()メソッドをみてみると、
・「BaseDemoGUI.cs」のOnGUI()メソッド下方を抜粋
GUILayout.Label ("Time Scale: " + string.Format ("{0:0.##}", _tween.timeScale)); var newTweenTimeScale = GUILayout.HorizontalSlider (_tweenTimeScale, 0, 3); if (newTweenTimeScale != _tweenTimeScale) { _tweenTimeScale = newTweenTimeScale; _tween.timeScale = _tweenTimeScale; } easeTypesGUI (); }
このコードがAbstractTweenのインスタンスのtimeScaleプロパティの代入をしている。
_tween.timeScale = _tweenTimeScale;
つまり、SimpleTween.cs
void Start () { // setup a position and color tween that loops indefinitely. this will let us play with the // different ease types _tween = Go.to (cube, 4, new TweenConfig () .position (new Vector3 (9, 4, 0)) .materialColor (Color.green) .setIterations (-1, LoopType.PingPong)); _tween.timeScale = 2; // これで2倍のスピード! }
【結論】
Tween以外はTime.timeScale = 0でポーズ止めておいて、
TimeScaleプロパティを0とか1にして適宜オフ・オン切り替えられますね!
では、Advent Calendar次の方へ!