Experimental: this API is experimental and might be changed or removed in the future.

AssetImporterEditor

class in UnityEditor.Experimental.AssetImporters

/

Hereda de:Editor

Cambiar al Manual

Descripción

Default editor for all asset importer settings.

Use the default editor to edit the import settings for assets. You can define a custom import settings editor for a specific asset type. To do this, create a new class that inherits from AssetImporterEditor and uses a CustomEditorAttribute that refers to a ScriptedImporter.

The following example shows how to make a custom ScriptedImporterEditor for a ScriptedImporter with a custom layout.

using System.IO;
using UnityEditor;
using UnityEditor.Experimental.AssetImporters;
using UnityEngine;

[CustomEditor(typeof(TransformImporter))] [CanEditMultipleObjects] public class TransformImporterEditor : ScriptedImporterEditor { // Stored SerializedProperty to draw in OnInspectorGUI. SerializedProperty m_GenerateChild;

public override void OnEnable() { base.OnEnable(); // Once in OnEnable, retrieve the serializedObject property and store it. m_GenerateChild = serializedObject.FindProperty("generateChild"); }

public override void OnInspectorGUI() { // Update the serializedObject in case it has been changed outside the Inspector. serializedObject.Update();

// Draw the boolean property. EditorGUILayout.PropertyField(m_GenerateChild);

// Apply the changes so Undo/Redo is working serializedObject.ApplyModifiedProperties();

// Call ApplyRevertGUI to show Apply and Revert buttons. ApplyRevertGUI(); } }

[ScriptedImporter(0, ".transform")] public class TransformImporter : ScriptedImporter { public bool generateChild;

public override void OnImportAsset(AssetImportContext ctx) { GameObject root = ObjectFactory.CreateGameObject(Path.GetFileNameWithoutExtension(ctx.assetPath)); if (generateChild) { GameObject child = ObjectFactory.CreateGameObject("child"); child.transform.SetParent(root.transform); } ctx.AddObjectToAsset("main", root); ctx.SetMainObject(root); } }

The following example demonstrates a specific case where the user cannot change settings and the Apply/Revert buttons are hidden with needsApplyRevert.

using System.IO;
using UnityEditor;
using UnityEditor.Experimental.AssetImporters;
using UnityEngine;

[CustomEditor(typeof(EmptinessImporter))] [CanEditMultipleObjects] public class EmptinessImporterEditor : ScriptedImporterEditor { //Let the parent class know that the Apply/Revert mechanism is skipped. protected override bool needsApplyRevert => false;

public override void OnInspectorGUI() { // Draw some information EditorGUILayout.HelpBox("Because this Importer doesn't have any settings, the Apply/Revert buttons are hidden.", MessageType.None); } }

[ScriptedImporter(0, ".emptiness")] public class EmptinessImporter : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { GameObject root = ObjectFactory.CreateGameObject(Path.GetFileNameWithoutExtension(ctx.assetPath)); ctx.AddObjectToAsset("main", root); ctx.SetMainObject(root); } }

The following example shows how to use extraDataType to read or save settings that are not part of the ScriptedImporter serialization, in the custom AssetImporterEditor.

using System;
using System.IO;
using UnityEditor;
using UnityEditor.Experimental.AssetImporters;
using UnityEngine;
using Object = UnityEngine.Object;

[CustomEditor(typeof(BooleanImporter))] [CanEditMultipleObjects] public class BooleanImporterEditor : ScriptedImporterEditor { // Property to show in the custom OnInspectorGUI. SerializedProperty m_BooleanProperty;

// override extraDataType to return the type that will be used in the Editor. protected override Type extraDataType => typeof(BooleanClass);

// override InitializeExtraDataInstance to set up the data. protected override void InitializeExtraDataInstance(Object extraTarget, int targetIndex) { var boolean = (BooleanClass)extraTarget; // Read the boolean value from the text file and fill the extraTarget object with the data. string fileContent = File.ReadAllText(((AssetImporter)targets[targetIndex]).assetPath); if (!bool.TryParse(fileContent, out boolean.boolean)) { boolean.boolean = false; } }

protected override void Apply() { base.Apply(); // After the Importer is applied, rewrite the file with the custom value. for (int i = 0; i < targets.Length; i++) { string path = ((AssetImporter)targets[i]).assetPath; File.WriteAllText(path, ((BooleanClass)extraDataTargets[i]).boolean.ToString()); } }

public override void OnEnable() { base.OnEnable(); // In OnEnable, retrieve the importerUserSerializedObject property and store it. m_BooleanProperty = extraDataSerializedObject.FindProperty("boolean"); }

public override void OnInspectorGUI() { // Note: you don't need to call serializedObject.Update or serializedObject.ApplyModifiedProperties // because you are not changing the target (serializedObject) itself.

// Update the importerUserSerializedObject in case it has been changed outside the Inspector. extraDataSerializedObject.Update();

// Draw the boolean property. EditorGUILayout.PropertyField(m_BooleanProperty);

// Apply the changes so Undo/Redo is working. extraDataSerializedObject.ApplyModifiedProperties();

// Call ApplyRevertGUI to show Apply and Revert buttons. ApplyRevertGUI(); } }

public class BooleanClass : ScriptableObject { public bool boolean; }

[ScriptedImporter(0, ".boolean")] public class BooleanImporter : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { string fileContent = File.ReadAllText(ctx.assetPath); var booleanObj = ObjectFactory.CreateInstance<BooleanClass>(); if (!bool.TryParse(fileContent, out booleanObj.boolean)) { booleanObj.boolean = false; } ctx.AddObjectToAsset("main", booleanObj); ctx.SetMainObject(booleanObj); Debug.Log("Imported Boolean value: " + booleanObj.boolean); } }

You can also use ScriptedImporter settings and extraData in the same AssetImporterEditor:

using UnityEditor;
using UnityEditor.Experimental.AssetImporters;

[CustomEditor(typeof(SomeScriptedImporter))] [CanEditMultipleObjects] public class SomeImporterEditor : ScriptedImporterEditor { // ...

public override void OnInspectorGUI() { serializedObject.Update(); extraDataSerializedObject.Update();

// Use propertyDrawers and custom GUI for any property from both serializedObject and extraDataSerializedObject.

extraDataSerializedObject.ApplyModifiedProperties(); serializedObject.ApplyModifiedProperties();

ApplyRevertGUI(); } }

[ScriptedImporter(0, ".someFile")] public class SomeScriptedImporter : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { // ... } }

Variables

showImportedObjectShould imported object be shown as a separate editor?
useAssetDrawPreviewDetermines if the asset preview is handled by the AssetEditor or the Importer DrawPreview

Funciones Públicas

HasModifiedDetermine if the import settings have been modified.
OnDisableThis function is called when the editor object goes out of scope.
OnEnableEsta función se llama cuando el objeto es cargado.

Funciones Protegidas

ApplySaves any changes from the Editor's control into the asset's import settings object.
ApplyButtonImplements the 'Apply' button of the inspector.
ApplyRevertGUIAdd's the 'Apply' and 'Revert' buttons to the editor.
AwakeThis function is called when the Editor script is started.
OnApplyRevertGUIProcess the 'Apply' and 'Revert' buttons.
ResetValuesReset the import settings to their last saved values.
RevertButtonImplements the 'Revert' button of the inspector.

Miembros heredados

Variables

serializedObjectUn SerializedObject representando el objeto u objetos siendo inspeccionados.
targetEl objeto siendo inspeccionado.
targetsUn arreglo de todos los objetos siendo inspeccionados.
hideFlagsShould the object be hidden, saved with the Scene or modifiable by the user?
nameEl nombre del objeto.

Funciones Públicas

DrawDefaultInspectorDraws the built-in inspector.
DrawHeaderLlame esta función para dibujar el encabezado del editor.
DrawPreviewEl primer punto de entrada para Preview Drawing.
GetInfoStringImplemente este método para mostrar información asset encima de la pre-visualización del asset.
GetPreviewTitleAnule este método si desea cambiar la etiqueta del área de vista previa.
HasPreviewGUIAnule este método en las sub-classes si usted implementa OnPreviewGUI.
OnInspectorGUIImplemente esta función para crear un inspector personalizado.
OnInteractivePreviewGUIImplemente para crear su propia vista previa personalizada interactiva. Las vistas previas interactivas personalizadas se utilizan en el área de vista previa del inspector y el selector de objetos.
OnPreviewGUIImplement to create your own custom preview for the preview area of the inspector, the headers of the primary editor, and the object selector.
OnPreviewSettingsAnule este método si desea mostrar controles personalizados en el encabezado de la vista previa.
RenderStaticPreviewOverride this method if you want to render a static preview.
RepaintRedraw any inspectors that shows this editor.
RequiresConstantRepaintChecks if this editor requires constant repaints in its current state.
UseDefaultMarginsAnule este método en subclases para devolver false si no desea márgenes predeterminados.
GetInstanceIDDevuelve el id de la instancia del objeto.
ToStringReturns the name of the object.

Funciones Protegidas

ShouldHideOpenButtonReturns the visibility setting of the "open" button in the Inspector.

Funciones Estáticas

CreateCachedEditorOn return previousEditor is an editor for targetObject or targetObjects. The function either returns if the editor is already tracking the objects, or destroys the previous editor and creates a new one.
CreateCachedEditorWithContextCreates a cached editor using a context object.
CreateEditorCrea un editor personalizado para targetObject o targetObjects.
CreateEditorWithContextMake a custom editor for targetObject or targetObjects with a context object.
DestroyRemoves a GameObject, component or asset.
DestroyImmediateDestroys the object obj immediately. You are strongly recommended to use Destroy instead.
DontDestroyOnLoadDo not destroy the target Object when loading a new Scene.
FindObjectOfTypeDevuelve el primer objeto activo cargado de tipo type.
FindObjectsOfTypeDevuelve una lista de todos los objetos activos cargados de tipo type.
InstantiateClona el objeto original y devuelve el clon.
CreateInstanceCrea una instancia de un objeto scriptable.

Operadores

bool¿Existe el objeto?
operator !=Compare si dos objetos se refieren a un objeto diferente.
operator ==Compara dos referencias de objeto para ver si se refieren al mismo objeto.

Mensajes

OnSceneGUIEnables the Editor to handle an event in the Scene view.
OnDestroyEsta función se llama cuando el objeto scriptable se destruirá.

Events

finishedDefaultHeaderGUIAn event raised while drawing the header of the Inspector window, after the default header items have been drawn.