🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1806閲覧

for文内でのDOTweenがなんかおかしい

gitalin

総合スコア24

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/11/12 11:46

こんにちわ・

DOTweenを使って複数オブジェクトのプロパティをトゥイーンをさせたいです。

以下のコード1のようにすると、**出力1 **のように、最後のインデックスでトゥイーンが繰り返されてしまいます。
(日本語下手なのでコードをご参照くださいmm)

####コード1

C#

1// NG 2Sequence seq = DOTween.Sequence(); 3for (var i = 0; i < 3; i++) { 4 seq.Join(DOVirtual.Float(0, 1, 1, value => { 5 Debug.Log("Test:" + "[ " + i + " ]" + value); 6 })); 7}

####出力1
Test:[ 3 ]0.01941286
Test:[ 3 ]0.01941286
Test:[ 3 ]0.01941286
Test:[ 3 ]0.02141985
Test:[ 3 ]0.02141985
Test:[ 3 ]0.02141985
.
.
.

ところで、以下のコード2のようにすると、
私が予期したような出力2になります。

####コード2

C#

1// OK 2Sequence seq = DOTween.Sequence(); 3seq.Join(DOVirtual.Float(0, 1, 1, value => { 4 Debug.Log("Test: [ 1 ]" + value); 5})); 6seq.Join(DOVirtual.Float(0, 1, 1, value => { 7 Debug.Log("Test: [ 2 ]" + value); 8})); 9seq.Join(DOVirtual.Float(0, 1, 1, value => { 10 Debug.Log("Test: [ 3 ]" + value); 11}));

####出力2
Test:[ 1 ]0.01941286
Test:[ 2 ]0.01941286
Test:[ 3 ]0.01941286
Test:[ 1 ]0.02141985
Test:[ 2 ]0.02141985
Test:[ 3 ]0.02141985
.
.
.

初心者の私にはコード1もコード2も行っていることは同じではないかと
思ってしまうのですが、なぜこのようなことになってしまうのか、
分かる方がいたら教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

それぞれTween自体は動いています。

for文の条件がi<3なのでi=3のときにfor文がループを終わりますが、そこで仕込んだTweenのonVirtualUpdateでiを参照しているためDebug.Logで表示する際にiがすべて3になっているだけだと思います。

実際に値の違う数値をTweenさせるとそれぞれの値が変動していることが確認できるかと思います

cs

1 float[] values = new float[] { 100, 200, 300 }; 2 3 private void Start() { 4 Sequence seq = DOTween.Sequence(); 5 for (var i = 0; i < 3; i++) { 6 seq.Join(DOVirtual.Float(values[i], 1, 1, value => { 7 Debug.Log("Value: " + value); 8 })); 9 } 10 11 seq.Play(); 12 }

投稿2019/11/13 01:03

hogefugapiyo

総合スコア3302

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問