Unityでスクリプトから画像を読み込んで表示する【uGUI】

unity-spriteUnityで画像を表示するのは
GameObject>UI>Image
で簡単にできます。

ただ必要な画像を全部シーンに置いて行ったら邪魔になるので、C#で動的に作成してみようかなと。ちょっと手間取ったのでメモ。

Unity 5.3使ってます。

まずは器のゲームオブジェクトを作成。引数はオブジェクト名。

GameObject work_image = new GameObject("WorkImage");

作ったゲームオブジェクトをCanvasの子にします。これしないと表示されない。

work_image.transform.parent = GameObject.Find("Canvas").transform;

画像の位置(アンカーポジション)を追加して画面の真ん中にします。

work_image.AddComponent<RectTransform>().anchoredPosition = new Vector3(0, 0, 0);

縮尺がおかしいのでちゃんと等倍にする。

work_image.GetComponent<RectTransform>().localScale = new Vector3(1, 1, 1);

スプライト画像追加。ここではResourcesフォルダにあるcounterファイルから読み込み。ちょっと横着したけど、これ本当はスライスしたスプライトの塊なので、Resources.LoadAll()で中身全部取得してから、counter_0を追加ってやった方が良いね。

work_image.AddComponent<Image>().sprite = Resources.Load<Sprite>("counter");

アスペクト比は元の画像の比率を維持。

work_image.GetComponent<Image>().preserveAspect = true;

画像のサイズを元画像と同じサイズにする。

work_image.GetComponent<Image>().SetNativeSize();

unity-sprite2これで画面の真ん中に画像(数字の0)が表示されました。ここまでできれば、後は普通に使えるね。

コメントを残す

メールアドレスが公開されることはありません。