Image_1
Image_2
Image_3
...
Image_20
will be ordered as
Image_1
Image_10
Image_11
etc. since you're using string sort.
You can use a sort comparator like
int SpriteListSort(string a, string b)
{
int iA, iB;
if (int.TryParse(a.Replace(mPrefix, ""), out iA) &&
int.TryParse(b.Replace(mPrefix, ""), out iB))
return iA - iB;
return a.CompareTo(b);
}
mSpriteNames.Sort(SpriteListSort);
but this assumes that mPrefix is exact (defaults to string sort otherwise).