ImporterGlobalSettings<T>
A settings singleton that asset importers read, kept in sync with asset import workers.
Read time 5 minutesLast updated 10 days ago
Definition
- Type: Class
- Namespace: UnityEditor
- Assembly: UnityEditor.CoreModule
- Inherits from: ScriptableObject
public class ImporterGlobalSettings<T> : ScriptableObject where T : ScriptableObject
Remarks
Unity synchronizes the values with asset import workers whenever an AssetDatabase refresh starts importing assets, so an importer reads the same values whether it runs in the Editor or on a worker. This includes changes that you have not saved to disk.
Changing a value does not synchronize it on its own. Unity picks the change up the next time it starts importing assets, so imports that are already running keep the values they started with.
Add the FilePathAttribute to your class to also persist the values between Editor sessions, and call to write them to disk. Unity synchronizes settings without this attribute in the same way, but only keeps them for the current session.
SaveExamples
using UnityEditor;using UnityEditor.AssetImporters;using UnityEngine;[FilePath("ProjectSettings/MyImporterSettings.asset", FilePathAttribute.Location.ProjectFolder)]public class MyImporterSettings : ImporterGlobalSettings<MyImporterSettings>{ public const string customDependencyName = "MyImporterSettings"; [SerializeField] float m_Scale = 1; public float scale => m_Scale; public void DoubleScale() { m_Scale *= 2; // Persisting the value is optional: importers read it whether or not it was saved to disk. Save(true); // Register a custom dependency to provoke a reimport of these assets. AssetDatabase.RegisterCustomDependency(customDependencyName, Hash128.Compute(m_Scale)); AssetDatabase.Refresh(); }}[ScriptedImporter(1, "myasset")]public class MyAssetImporter : ScriptedImporter{ public override void OnImportAsset(AssetImportContext ctx) { ctx.DependsOnCustomDependency(MyImporterSettings.customDependencyName); var root = new GameObject("MyAsset"); root.transform.localScale = Vector3.one * MyImporterSettings.instance.scale; ctx.AddObjectToAsset("root", root); ctx.SetMainObject(root); }}static class MyImporterSettingsMenuItems{ [MenuItem("MyImporterSettings/Modify")] static void ModifyMyImporterSettings() { MyImporterSettings.instance.DoubleScale(); }}
Static Properties
Property | Description |
|---|---|
| instance | Gets the instance of the ImporterGlobalSettings Singleton. |
Methods
Method | Description |
|---|---|
| Save | Saves the current state of the ImporterGlobalSettings. |
Static Methods
Method | Description |
|---|---|
| GetFilePath | Get the file path where this ImporterGlobalSettings is saved to. |
Inheritance
Operators
Operator | Description |
|---|---|
| operator == | Compares two object references to see if they refer to the same object. |
| bool | Determines whether the object exists. |
| operator != | Compares if two objects refer to a different object. |