エンジニア概論ノート

エンジニアとしてやってることを記録します

【Unity 】DOTweenでRectTransformが見つからなかった時の話

f:id:j_unknown:20180813000447p:plain DOTween初学者に贈る私の失敗録

DOTweenを勉強しようと思ったらいきなり分からなくなった。

知ってる人からすれば「こんなことで詰まる人居るんだ・・・」と感じる内容ですが 思いっきり30分くらいハマったのでメモ。

DOTWeenとは

Unityでアニメーションを作る際の神アセットと名高い、各所を見た感じでは現状一番良さそうなので勉強対象に パフォーマンスも既存のものより良くて、設定もしやすいということなので早めにマスターしたい。

3Dではtransformを、2DではRectTransformを操作する

DOTWeenの基本の書き方は以下の通り

// まずはスクリプトでDOTweenを使う事を宣言
using DG.Tweening;

// 3Dの場合
void Start() {
  Transform obj = this.GetComponent<Transform>();
  obj.DOMove(new Vector3( 1.0f, 1.0f, 0.0f) , 2.0f );
}

// 2Dの場合
void Start() {
  RectTransform obj = this.GetComponent<RectTransform>();
  obj.DOMove(new Vector3( 1.0f, 1.0f, 0.0f) , 2.0f );
}

これで簡単な動作確認をしようとしたところ、3Dは動くのに2Dが動かない・・・何故・・・。 そもそも2DのオブジェクトにRectTransformなんていうコンポーネントなくない?と思っていました。

RectTransformとは

これがRectTransformコンポーネント

f:id:j_unknown:20180813000447p:plain

参考書とかでもよく見るし、触ったことはあるコンポーネントだけどどうやって追加したらこのコンポーネントがつくんだ? とか思って過去に読んだ参考書を引っ張り出したところ解決。

Hierarchyの中で右クリック→UI→Imageをクリック これで作られたImageに対してSource Imageを設定することで画像を表示していました。

上記操作で画像を追加したところ、RectTransformつきのオブジェクトが生成されたので、先ほどのコードで無事動作しました。 単純に画像をProjectのところに追加しても駄目だということで。

まとめ

  • 2Dの場合はRectTransformを操作する、3Dの場合はTransformを操作する。
  • 2D,3Dというのはプロジェクトの設定とかではなくあくまで分かりやすく表現してくれているだけ
  • 単純に2Dのプロジェクトにpng画像を置いて動かしたい場合はTransformで操作すれば動く
  • でも多分RectTransformで操作した方が都合が良いんだろうからどこを見てもRectTransformを使うと書いてある。

以上、簡単なことだけど理解が深まりました。