- Home /
Reimport a specific folder?
I think the subject line says it all.
But, is it possible to make an Editor script (callable through the Editor menus) where we call the Editor rightmouse command "Reimport" on a folder, but hardcode it to the folder "Resource/Models"?
Just wondering if this is possible?
Answer by Joshua · Aug 08, 2011 at 10:58 PM
This little script will import all the assets contained in the folder you currently have selected, and all it's sub-folders. Just save this script in a folder in your project called Editor. Next, go to Assets > Reimport Folder and it will reimport the folder you currently have selected.
import System.IO;
@MenuItem( "Assets/Reimport Folder" )
static function ImportFolder()
{
var realPath : String = Application.dataPath;
realPath = realPath.Remove( realPath.Length - 6 );
var selectedPath : String = realPath + AssetDatabase.GetAssetPath( Selection.activeObject );
var fileEntries : String[] = Directory.GetFiles( selectedPath, "*", SearchOption.AllDirectories );
for( var file : String in fileEntries )
{
file = file.Replace( "\\", "/" );
file = file.Remove( 0, realPath.Length );
AssetDatabase.ImportAsset( file );
}
}
cool! very interesting. Didnt know I could use AssetDatabase object without having the real Unity asset server.
AssetDatabase is for everyone, it's the (local) database of assets in your project.
As Warwick says, it's the API you use from inside Unity to reference stuff inside your project folder. Also means you can, in edit mode, load in stuff without using Resources.Load.
Yummy! thanks for making this so obvious to me now. Thanks a lot! Great!
AssetDatabase is for everybody, it's the (nearby) database of advantages in your venture.
Answer by T_Strijker · Jan 23, 2020 at 08:26 AM
For people looking for an easier way. I found that calling AssetDatabase.ImportAsset method with the ImportAssetOptions.ImportRecursive and ImportAssetOptions.DontDownloadFromCacheServer options re imports everything in a folder.
string folderPath = "Assets/Art/"; AssetDatabase.ImportAsset(folderPath , ImportAssetOptions.ImportRecursive | ImportAssetOptions.DontDownloadFromCacheServer);
Answer by kabel · Sep 04, 2011 at 11:07 AM
i needed this to reload screenshots that i use as savegame thumbnails. just saying that this did the job for me:
AssetDatabase.Refresh();
Answer by poolts · Aug 08, 2011 at 10:19 PM
Why would you need to reimport?
Any directories within the resource folder can be accessed with Resources.Load() and obviously if you overwrite a resource, which you have pointed to in your could it will be automatically "reimported" anyway. If this isn't what you looking for, comment back :)
we often ajust the fbx models and needs to reimport certain folders. Sometimes we also add new fbx or remove some of the old ones, so we remove them all from a folder and replace them with the "active" one. Then we do a reimport.
Answer by mahri726 · Apr 18, 2013 at 04:28 PM
I still don't get it. You copy the script in a txt flile, name it randomly and place it inside Editor folder in Unity installation dirrectory? It doesn't work for me. I hope that this script would solve my problem: when I import a big pack of assets linked together(by copying all the folders of the pack inside Assets folder), when Unity imports all, it crashes. If I import only parts of assets, all the links are broken.
Your answer
