You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2019中ScriptedImporter处理FBX导入事件报错求助

问题解决:Unity FBX导入触发事件报错处理

报错原因

  1. 重复注册冲突:项目中存在多个EmptinessImporter实例(比如脚本重复、多文件夹重复引用),导致Unity检测到同一扩展名被同一Importer多次注册。
  2. 原生格式覆盖限制:Unity 2019.4中,ScriptedImporter仅支持处理自定义格式,无法覆盖Unity原生支持的格式(如FBX、PNG),强行绑定会触发冲突报错。

正确解决方案

使用Unity官方推荐的AssetPostprocessor来监听FBX导入事件,而非自定义ScriptedImporter。以下是完整代码:

using UnityEditor;
using UnityEngine;

// 必须放在Assets/Editor文件夹下,仅在Editor环境生效
public class FBXImportProcessor : AssetPostprocessor
{
    // FBX导入前触发,可修改导入设置
    void OnPreprocessModel()
    {
        // 仅过滤FBX文件
        if (assetImporter is ModelImporter && assetPath.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase))
        {
            Debug.Log($"预处理FBX文件: {assetPath}");
            // 示例:修改ModelImporter的导入设置
            ModelImporter importer = (ModelImporter)assetImporter;
            // importer.importMaterials = false; // 关闭材质导入
        }
    }

    // FBX导入完成后触发,可修改生成的GameObject
    void OnPostprocessModel(GameObject importedObject)
    {
        if (assetImporter is ModelImporter && assetPath.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase))
        {
            Debug.Log($"FBX导入完成: {assetPath},生成对象: {importedObject.name}");
            // 示例:给导入的对象添加自定义组件
            // importedObject.AddComponent<YourCustomComponent>();
        }
    }
}

注意事项

  • 删除原有的EmptinessImporter和EmptinessImporterEditor脚本,避免残留冲突。
  • 若仍有重复注册类的报错,检查项目中是否存在重复的脚本文件或重复引用。

内容的提问来源于stack exchange,提问作者Isaac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:01:25