Unity对本地多文件中的图片读取 需要进行排序
为什么要排序
Unity在读取本地多文件夹中的图片时,顺序是按照1.jpg 10.jpg 然后才是2.jpg 21.jpg
新建一个名为 IEnumerableEx的脚本 (不需要挂载)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
public static class IEnumerableEx
{
public static IOrderedEnumerable<T> OrderByAlphaNumeric<T>(this IEnumerable<T> source, Func<T, string> selector)
{
int max = source
.SelectMany(i => Regex.Matches(selector(i), @"\d+").Cast<Match>().Select(m => (int?)m.Value.Length))
.Max() ?? 0;
return source.OrderBy(i => Regex.Replace(selector(i), @"\d+", m => m.Value.PadLeft(max, '0')));
}
}
如何引用:
private List<string> listName = new List<string>();
在需要的地方给listName添加数据 listName.add
void Test(){
var val = listName.OrderByAlphaNumeric(s => s).ToList();
listName.Clear();
listName.AddRange(val);
}
这样就可以实现排序