AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる場合の対処法

UnityでImageのSpriteをコードで切り替える処理を行ったのですが、画像自体は切り替えられるけど、アスペクト比がおかしくなる現象が発生しました。

今回はこの件の対処法に関するメモです。

【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる

【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる場合の対処法

アスペクト比がおかしくなってしまう
【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる場合の対処法

↓Imageは「Preserve Aspect」にチェック
【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる場合の対処法

スクリプトは下記

//月毎にImageのSpriteを切り替える

emblem.GetComponent<Image>().sprite = emblem_on[current.Month - 1];

//emblem : 画像素材をセットするImage
//emplem_on:画像素材の配列
//current.Month :現在設定中の月 

【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる場合の対処法


色々試した結果、以下の方法でアスペクト比がおかしくなる現象が解消されました。

//spriteを切り替える前にnullを設定する

emblem.GetComponent<Image>().sprite = null;
emblem.GetComponent<Image>().sprite = emblem_on[current.Month - 1];

Imageのspriteを切り替える前にnullを設定することでアスペクト比が正常に設定されるようになりました。
Unityのバグなのか仕様なのかわかりませんが、とりあえずOK。