はじめに
今回は指定しパス内にあるテクスチャのパスをすべて取得する方法を紹介します
環境は Unity 2021.3.25f1です
コード
Directory.GetFilesでパス内にあるファイルを取得できるのでそれを活用します
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; public static class StringExtension { /// <summary> /// 指定したパス(Assetsからの相対パス)のフォルダ内にあるテクスチャのパス取得 /// </summary> /// <param name="path"></param> /// <returns></returns> public static List<string> GetTexturePathList(string path) { List<string> list = new List<string>(); path = Application.dataPath + "//" + path; if (!Directory.Exists(path)) return list; string[] png = Directory.GetFiles(path, "*.png", SearchOption.AllDirectories); string[] jpg = Directory.GetFiles(path, "*.jpg", SearchOption.AllDirectories); string[] jpeg = Directory.GetFiles(path, "*.jpeg", SearchOption.AllDirectories); string[] tga = Directory.GetFiles(path, "*.tga", SearchOption.AllDirectories); string[] tif = Directory.GetFiles(path, "*.tif", SearchOption.AllDirectories); string[] tiff = Directory.GetFiles(path, "*.tiff", SearchOption.AllDirectories); list.AddRange(png); list.AddRange(jpg); list.AddRange(jpeg); list.AddRange(tga); list.AddRange(tif); list.AddRange(tiff); for (int i = 0; i < list.Count; i++) { list[i] = list[i].Replace("\\", "/");//¥を/に置き換え list[i] = list[i].Replace(Application.dataPath ,"Assets"); } return list; } }
使い方
Assetsからの相対パスを渡すと画像のパスが取得できます
public string path; public void Update() { if(Input.GetKeyDown(KeyCode.F)) { var l = StringExtension.GetTexturePathList(path); for (int i = 0; i < l.Count; i++) { Debug.Log(l[i]); } } }