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();
    } 
}
【実行結果】
完成~
      
 
    
お名前






