版本: Unity 6 (6000.0)
语言英语
  • C#

ScriptedImporter

UnityEditor.AssetImporters 中的类

/

继承自:AssetImporter

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每一项更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

自定义资源导入器的抽象基类。

脚本化导入器是与特定文件扩展名关联的脚本。它们由 Unity 的资源管道调用,以将关联文件的内容转换为资源。

使用 ScriptedImporterAttribute 类将自定义导入器注册到资源管道。

ScriptedImporter 的 C# 字段被序列化,就像 MonoBehaviour 上的字段一样。有关详细信息,请参阅 脚本序列化。您可以在 Inspector 中查看这些属性,并使用它们来控制每个资源的导入器行为。要以编程方式访问资源属性的值,请使用 AssetImporter.GetAtPath 并将返回值类型转换为派生自 ScriptedImporter 的正确类。更改值后,通过调用 EditorUtility.SetDirty,然后调用 AssetImporter.SaveAndReimport 来触发新的导入。

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

[ScriptedImporter(1, "cube")] public class CubeImporter : ScriptedImporter { public float m_Scale = 1;

public override void OnImportAsset(AssetImportContext ctx) { var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); var position = JsonUtility.FromJson<Vector3>(File.ReadAllText(ctx.assetPath));

cube.transform.position = position; cube.transform.localScale = new Vector3(m_Scale, m_Scale, m_Scale);

// 'cube' is a GameObject and will be automatically converted into a Prefab // (Only the 'Main Asset' is eligible to become a Prefab.) ctx.AddObjectToAsset("main obj", cube); ctx.SetMainObject(cube);

var material = new Material(Shader.Find("Standard")); material.color = Color.red;

// Assets must be assigned a unique identifier string consistent across imports ctx.AddObjectToAsset("my Material", material);

// Assets that are not passed into the context as import outputs must be destroyed var tempMesh = new Mesh(); DestroyImmediate(tempMesh); } }

公共方法

OnImportAsset此方法必须由派生类覆盖,并由资源管道调用以导入文件。
SupportsRemappedAssetType如果您的 ScriptedImporter 支持重新映射特定资源类型,请覆盖此方法。

消息

GatherDependenciesFromSourceFile您可以实现的静态回调,用于设置对其他资源的工件依赖项,并优化资源的导入顺序。
OnValidate当导入器加载或 Inspector 中的值更改时,将调用此函数。
Reset重置为默认值。

继承的成员

属性

assetBundleName获取或设置 AssetBundle 名称。
assetBundleVariant获取或设置 AssetBundle 变体。
assetPath此导入器的资源路径名称。(只读)
importSettingsMissing当导入的资源未提供元文件时,该值为 true。
userData获取或设置任何用户数据。
hideFlags对象是否应隐藏、与场景一起保存或用户可修改?
name对象的名称。

公共方法

AddRemap将导入的资源(例如 FBX 文件)中的子资源映射到相同类型的外部资源。
GetExternalObjectMap获取 AssetImporter 使用的外部对象映射的副本。
RemoveRemap从外部对象映射中删除一项。
SaveAndReimport如果资源导入器已更改,则保存资源导入器设置。
SetAssetBundleNameAndVariant设置 AssetBundle 名称和变体。
GetInstanceID获取对象的实例 ID。
ToString返回对象的名称。

静态方法

GetAtPath检索路径中资源的资源导入器。
GetImportLog检索在路径中资源导入期间生成的日志。
Destroy删除游戏对象、组件或资源。
DestroyImmediate立即销毁对象 obj。强烈建议您改用 Destroy。
DontDestroyOnLoad加载新场景时不要销毁目标对象。
FindAnyObjectByType检索类型为 type 的任何已加载活动对象。
FindFirstObjectByType检索类型为 type 的第一个已加载活动对象。
FindObjectsByType检索类型为 type 的所有已加载对象的列表。
Instantiate克隆对象 original 并返回克隆。
InstantiateAsync捕获原始对象(必须与某个游戏对象相关)的快照,并返回 AsyncInstantiateOperation。

运算符

bool对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用以查看它们是否引用同一对象。