Unity解説 フォルダ内の画像を表示
Unityで、フォルダ内の画像を表示するよ。
まず、「Assets」フォルダ内に「Resources」フォルダを作って、さらにその中に任意の名前のフォルダを作る。
今回は「ImagesFolder」にした。その中に以下の画像を入れる。
サンプル画像【ImagesFolder.zip】
画像を全選択して、InspectorのTexture TypeをDefaultから「Sprite(2D and UI)」に変更する。
〇画像を全選択
〇Texture TypeをDefaultからSprite(2D and UI)に変更
「Hierarchy」を右クリック、「UI」>「Image」から「Image」オブジェクトを作って名前を「Image001」にする。

画像を表示するコードは以下のとおりだよ。
【IC110.cs】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class IC110 : MonoBehaviour
{
private Image img001;
void Start()
{
img001 = GameObject.Find("Image001").GetComponent<Image>();
UnityEngine.Object[] ImagesArray = Resources.LoadAll("imagesFolder");
img001.sprite = Resources.Load<Sprite>("imagesFolder/" + ImagesArray[3].name);
}
}
空のオブジェクトにアッタッチして、実行する。
これで画像が表示できる。今回は、コードのとおりに「ImagesArray[3]」の配列に入っている画像を表示した。
このコードを改良して、画像を選択して表示できるようにするよ。
UIのImageのSource Imageに適当な画像を選択し、表示される「Preserve Aspect」にチェックをいれる。

これをやらないと横縦比が崩れるんだよね。
次にサンプルコードは以下のとおり。
【IC130.cs】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class IC130 : MonoBehaviour
{
//スクロールの開始初期位置
private Vector2 scrollViewVector = new Vector2(0,0);
public Rect scrollViewRect1;
public Rect scrollViewRect2;
private Image img001;
void Start()
{
//スタート時(宣言時×)に値を格納しないと、コードを更新してもpubulicの値が変わらなくなる。
//第3引数、第4引数はScrollView自体の表示範囲。
scrollViewRect1 = new Rect (25, 50, 220, 300);
//第4引数はScrollViewの中身の表示範囲であるが、今後の拡張性を考え大きめ。
scrollViewRect2 = new Rect (0, 0, 200, 800);
img001 = GameObject.Find("Image001").GetComponent<Image>();
}
void OnGUI () {
// スクロールビューを表示する。
scrollViewVector = GUI.BeginScrollView (scrollViewRect1, scrollViewVector, scrollViewRect2);
//scrollView内に表示させるボックスの初期位置。繰り返し、加算していく。
int tateIchi = 0;
int skip001 = 1;
UnityEngine.Object[] imagesArray = Resources.LoadAll("ImagesFolder");
//繰り返し、scrollViewの中のボックスを作成していく。
foreach(UnityEngine.Object image in imagesArray)
{
//object型「image」からstring形式でファイル名を取得
string fileName = image.name;
if (skip001 % 2 == 0)//重複削除のため、一つ飛ばし(偶数のみ)でボタンを作成
{
if (GUI.Button(new Rect (0,tateIchi,200,20),fileName))
{
img001.sprite = null;
img001.sprite = Resources.Load<Sprite>("ImagesFolder/" + fileName);
}
tateIchi = tateIchi + 20;
Debug.Log(fileName);
}
skip001 ++;
}
// スクロールビューを終了する。
GUI.EndScrollView();
}
}
【実行結果】
完成~
お名前






