public static T[] GetAllInstances<T>() where T : ScriptableObject
{
string[] guids = AssetDatabase.FindAssets("t:"+ typeof(T).Name); //FindAssets uses tags check documentation for more info
T[] a = new T[guids.Length];
for(int i =0;i<guids.Length;i++) //probably could get optimized
{
string path = AssetDatabase.GUIDToAssetPath(guids[i]);
a[i] = AssetDatabase.LoadAssetAtPath<T>(path);
}
return a;
}
public class CharacterList
{
List<Character> characterList = new List<Character>();
void PopulateList()
{
string[] assetNames = AssetDatabase.FindAssets("Your_Filter", new[] { "Assets/YourFolder" });
characterList.Clear();
foreach (string SOName in assetNames)
{
var SOpath = AssetDatabase.GUIDToAssetPath(SOName);
var character = AssetDatabase.LoadAssetAtPath<Character>(SOpath);
characterList.Add(character);
}
}
}