- Home /
Change an object's import settings in the editor
I got a mesh that I need to change the settings for. I found http://unity3d.com/support/documentation/ScriptReference/ModelImporter.html But I can't figure out how to use it. What I want is to simply do something like:
Mesh mesh; mesh.thisorthat = value;
from the editor. The model importer seems perfect for that, but I can't figure out how to assign a mesh to it.
I don't know a way for this, but what I know is: You can replace the texture -that will be loaded in the run-time- in the Assets folder and set the settings as you want, in the run-time when you load it, it'll be loaded with the settings you just saved.
Answer by jahroy · Jun 15, 2011 at 09:42 PM
It sounds like you might be interested in writing an editor script.
You could write a function that gets invoked by a menu item that could do what you want.
One easy way to do it would be to use the Selection object, which allows you to select an object in the project or hierarchy and perform operations on it.
Selection:
http://unity3d.com/support/documentation/ScriptReference/Selection.html
MenuItem (with some nice example code):
http://unity3d.com/support/documentation/ScriptReference/MenuItem.html
Another way to reference an object from an editor script is to use the AssetDatabase or Resources classes.
AssetDatabase (allows you to load an asset based on its path among other things):
http://unity3d.com/support/documentation/ScriptReference/AssetDatabase.html
Resources (allows you to load assets from specific directories at runtime):
http://unity3d.com/support/documentation/ScriptReference/Resources.html
If you're talking about changing settings when assets are imported, you might want to look at the AssetPostprocessor class, which lets you specify various functions to get executed whenever various types of assets get imported:
http://unity3d.com/support/documentation/ScriptReference/AssetPostprocessor.html
Yeah I am referencing my objects right now and that works, I can change the limited amount of options that mesh object has. But I need to change it's import properties. Like I reference it and then change import properties of it and then apply it or something.
Here's some code I use to override image import settings for iOS builds.
It gets called from a $$anonymous$$enuItem in an editor script.
It's basically copied directly from the wiki:
static void SelectedChangeTextureFormatSettingsIOS(TextureImporterFormat newFormat)
{
Object[] textures = GetSelectedTextures();
Selection.objects = new Object[0];
foreach (Texture2D texture in textures) {
string path = AssetDatabase.GetAssetPath(texture);
TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
textureImporter.SetPlatformTextureSettings("iPhone", 1024, newFormat);
AssetDatabase.ImportAsset(path);
}
}
It looks like using a $$anonymous$$odelImporter would be pretty similar.
Your answer
Follow this Question
Related Questions
Updating UV in imported mesh without having to re-material 0 Answers
How to Change Default Import Settings? 5 Answers
When to use Generate Lightmap UV? 0 Answers
Mesh import setting - scale factor = 0.01 default, why? 0 Answers
Rename Mesh -- editor script ? 2 Answers