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?

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 );
	}
}

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);`

i needed this to reload screenshots that i use as savegame thumbnails.
just saying that this did the job for me:

AssetDatabase.Refresh();

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 :slight_smile:

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.

To just get a Single Asset to refresh I’ve got following out of @Joshua 's Code in c#

		public static void ReImport(this GameObject go){
			string selectedPath;
			if(go.scene.IsValid()){
				Object realGO = PrefabUtility.GetCorrespondingObjectFromSource(go);
				selectedPath = AssetDatabase.GetAssetPath(realGO);
				AssetDatabase.ImportAsset(selectedPath);
				Debug.Log(" Scene Object was succesfully reimported at: "+"<color=#e0771a><i>"+"Assets"+selectedPath+"</i></color>");
			}else{
				selectedPath = AssetDatabase.GetAssetPath(go);
				AssetDatabase.ImportAsset(selectedPath);
				Debug.Log(" Asset was succesfully reimported at: "+"<color=#e0771a><i>"+"Assets"+selectedPath+"</i></color>");
			}
		}