- Home /
Is it possible to get a list of all assets in a project folder?
Hi
I want to be able to fetch an array of all the assets in a particular project folder so that I can use AssetDatabase.SetLabels to add labels to all of them.
I've tried AssetDatabase.LoadAllAssetsAtPath("Assets/MyMetalTextures"); but this doesn't return anything. There have been a few threads with people having this same problem, but no solutions yet.
Does this function work in another way? Or is there an alternative way to mass-set asset labels?
Thanks
Answer by Ray-Pendergraph · Mar 31, 2011 at 12:23 PM
Just now glancing at the API documents it does not seem there is an obvious way other than what you tried. I have not done this with the AssetDatabase class but I have done some interesting things with the AssetVersioning.db file under the /Library folder inside the project. This is a sqlite database that you can query using standard linux or mac command line tools (I'm sure there is one out there for other OSs too :-) ). I am able to get a complete list of folders and assets from the using this SQL on this database:
select folder, name from assetversion INNER JOIN parentfolders ON assetversion.parentfolderid = id WHERE assetversion.parent != X'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF';
As far as I can tell this gets you everything under the Assets folder although the parent folder name does not include "Assets"... maybe that's your issue. The WHERE clause here filters out deleted assets, if you change != to = you get everything that has been deleted. You can change the query for special searches for .cs, FBX, etc. To me SQL is better than writing code in C# to filter this stuff.
Hope this helps.
Thanks, that seems a good way to approach the problem. It would have been nice to integrate this in to existing C# scipts, so hope it's a future feature.
Your answer