UnityでImageのSpriteをコードで切り替える処理を行ったのですが、画像自体は切り替えられるけど、アスペクト比がおかしくなる現象が発生しました。
今回はこの件の対処法に関するメモです。
【Unity】Imageのスプライトをスクリプトで切り替えるとアスペクト比がおかしくなる
- やりたいこととしては、シーンにImageを配置して、カレンダーの日付に応じてスクリプトでImageのSpriteを切り替えていく感じ
- Imageは「Preserve Aspect」にチェックを入れて、アスペクト比を維持するように設定
- 現象としては、Imageのスクリプトは切り替わるが、アスペクト比がおかしくなってしまう
- スクリプトで切り替える画像素材は、それぞれアスペクト比が異なる
↓アスペクト比がおかしくなってしまう
↓Imageは「Preserve Aspect」にチェック
↓スクリプトは下記
//月毎に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。