[Unity] [NGUI] スクリプトからAtlasのスプライトを変更する

NGUIでスプライトをスクリプトから動的に変更するときに嵌ったメモです。

NGUIでは、スプライトはUISpriteコンポーネントで管理します。
あらかじめAtlasで作成したスプライトは、UISprite.spriteNameで設定できます。

しかし、スプライトのサイズは変更されません。
たとえば、小さなスプライトから大きなスプライトに変更すると、サイズが縮小された状態で描画されてしまいます。

したがって、スプライトの変更後にサイズも合わせて変更したい場合は一工夫する必要があります。

上記操作を行うスクリプトは以下のような形になります。

変更後のスプライトサイズに合わせてUISpriteのサイズを変更するために、
まずサイズの指定元と指定先のコンポーネントを取得します。

UISpriteDataのwidth、heightフィールドに変更後のスプライトのサイズが格納されています。
そして、サイズの指定先となるUIRectコンポーネントをspriteから取得します。

サイズをそのまま変更してしまうと、スプライトの座標がおかしくなってしまうため、
一時的に保存してあとで戻すようにします。
サイズの変更はUIRect.SetRect()メソッドにて行います。

これで、サイズもスプライトに合わせて反映されるようになりました。

COMMENTS & TRACKBACKS

  • Comments ( 0 )
  • Trackbacks ( 1 )

コメントはまだありません。

  1. […] 【参考】[Unity] [NGUI] スクリプトからAtlasのスプライトを変更する | ftvlog […]

LEAVE A REPLY

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.