{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart/",
  "atlas": "https://www.pystone.net/?node=uwa-answer-fbx-default-material-persists-after-restart#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart.md",
  "context": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:uwa-answer-fbx-default-material-persists-after-restart",
  "slug": "uwa-answer-fbx-default-material-persists-after-restart",
  "title": "本地删除FBX的DefaultMaterial在unity重启后无效",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "石心.Yong"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "本地删除FBX的DefaultMaterial在unity重启后无效",
  "contentRole": "source",
  "sourceType": "source",
  "sourceMetadata": {
    "author": "石心.Yong"
  },
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "external_source",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "contentHash": "db70d6e950fb298513a45151f2ccab28cfe2a7bce705519a75c85bcb636aea81",
  "assets": [],
  "headings": [
    {
      "depth": 1,
      "text": "本地删除FBX的DefaultMaterial在unity重启后无效",
      "anchor": "本地删除fbx的defaultmaterial在unity重启后无效",
      "citation": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart/#%E6%9C%AC%E5%9C%B0%E5%88%A0%E9%99%A4fbx%E7%9A%84defaultmaterial%E5%9C%A8unity%E9%87%8D%E5%90%AF%E5%90%8E%E6%97%A0%E6%95%88"
    },
    {
      "depth": 2,
      "text": "问题",
      "anchor": "问题",
      "citation": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart/#%E9%97%AE%E9%A2%98"
    },
    {
      "depth": 2,
      "text": "我的回答",
      "anchor": "我的回答",
      "citation": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart/#%E6%88%91%E7%9A%84%E5%9B%9E%E7%AD%94"
    },
    {
      "depth": 2,
      "text": "来源与关系",
      "anchor": "来源与关系",
      "citation": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart/#%E6%9D%A5%E6%BA%90%E4%B8%8E%E5%85%B3%E7%B3%BB"
    }
  ],
  "claims": [],
  "outgoing": [
    {
      "id": "note:my-uwa-answers",
      "title": "我的 UWA 问答",
      "url": "https://www.pystone.net/notes/my-uwa-answers/",
      "atlas": "https://www.pystone.net/?node=my-uwa-answers#knowledge-atlas",
      "label": "我的 UWA 问答",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "上位集合：我的 UWA 问答",
      "citation": "https://www.pystone.net/notes/uwa-answer-fbx-default-material-persists-after-restart/#%E6%9D%A5%E6%BA%90%E4%B8%8E%E5%85%B3%E7%B3%BB"
    }
  ],
  "incoming": [
    {
      "id": "note:my-uwa-answers",
      "title": "我的 UWA 问答",
      "url": "https://www.pystone.net/notes/my-uwa-answers/",
      "atlas": "https://www.pystone.net/?node=my-uwa-answers#knowledge-atlas",
      "label": "我的 UWA 问答",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "2021-05-11：本地删除FBX的DefaultMaterial在unity重启后无效（内存管理）",
      "citation": "https://www.pystone.net/notes/my-uwa-answers/#2021"
    },
    {
      "id": "note:game-graphics-and-runtime",
      "title": "游戏图形与运行时",
      "url": "https://www.pystone.net/notes/game-graphics-and-runtime/",
      "atlas": "https://www.pystone.net/?node=game-graphics-and-runtime#knowledge-atlas",
      "label": "游戏图形与运行时",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "我的UWA问答中的“2021-05-11 - 本地删除FBX的DefaultMaterial在unity重启后无效”导航项",
      "citation": "https://www.pystone.net/notes/game-graphics-and-runtime/#%E6%88%91%E7%9A%84uwa%E9%97%AE%E7%AD%94"
    }
  ],
  "contentMarkdown": "# 本地删除FBX的DefaultMaterial在unity重启后无效\n\n> [!note] 我的 UWA 问答\n> 本文收录我在 UWA 问答发表的公开回答。问题内容归原提问者；回答保留当时语境，技术结论可能受 Unity 版本、平台和项目条件限制。\n\n## 问题\n\n用了addressables系统，打包ab有default material有冗余\n\n在打包机上运行脚本把fbx的默认材质删除后变紫，但是重新打开工程后默认材质又回来了，导致冗余还在\n\n版本2018.4.34\n\n删除材质的脚本：\n\n```\nusing System;\n\nusing UnityEngine;\n\nusing System.Collections;\n\nusing System.IO;\n\nusing UnityEditor;\n\nusing Object = UnityEngine.Object;\n\nclass DisableMaterialImport : AssetPostprocessor {\n\n    [MenuItem(\"Tools/Reimport All Model\")]\n\n    public static void ReimportAllModel()\n\n    {\n\n        var assetPaths = AssetDatabase.GetAllAssetPaths();\n\n        Array.Sort(assetPaths);\n\n        Debug.LogWarning(string.Format(\"Total assets count: {0}\", assetPaths.Length));\n\n        int processedCount = 0;\n\n        foreach (string assetPath in assetPaths)\n\n        {\n\n            string normalizedAssetPath = assetPath.ToLower();\n\n            if (!normalizedAssetPath.EndsWith(\".fbx\") &&\n\n                !normalizedAssetPath.EndsWith(\".obj\") &&\n\n                !normalizedAssetPath.EndsWith(\".3ds\"))\n\n            {\n\n                continue;\n\n            }\n\n            var modelImporter = AssetImporter.GetAtPath(assetPath) as ModelImporter;\n\n            if (modelImporter == null || modelImporter.importMaterials)\n\n            {\n\n                continue;\n\n            }\n\n            AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ImportRecursive | ImportAssetOptions.ForceUpdate);\n\n            Debug.Log(assetPath, AssetDatabase.LoadMainAssetAtPath(assetPath));\n\n            processedCount++;\n\n        }\n\n        Debug.LogWarning(string.Format(\"Total processed model count: {0}\", processedCount));\n\n        AssetDatabase.SaveAssets();\n\n    }\n\n    private static void FixedModelImport(ModelImporter modelImporter, GameObject model)\n\n    {\n\n        //Debug.Log(\"FixedModelImport \"+model);\n\n        var renderers = model.GetComponentsInChildren<Renderer>(true);\n\n        if (renderers == null)\n\n        {\n\n            return;\n\n        }\n\n        modelImporter.importMaterials = false;\n\n        modelImporter.importBlendShapes = false;\n\n        modelImporter.importAnimation = false;\n\n        modelImporter.isReadable = false;\n\n        modelImporter.optimizeMesh = true;\n\n        foreach (var renderer in renderers)\n\n        {\n\n            if (renderer == null)\n\n            {\n\n                continue;\n\n            }\n\n            renderer.sharedMaterials = new Material[renderer.sharedMaterials.Length];\n\n        }\n\n/*        var animator = model.GetComponent<Animator>();\n\n        if(animator!=null) Object.DestroyImmediate(animator);*/\n\n    }\n\n    private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets,\n\n        string[] movedFromAssetPaths)\n\n    {\n\n        foreach (var path in importedAssets)\n\n        {\n\n            //Debug.Log(\"OnPostprocessAllAssets \"+path+\" \"+path.EndsWith(\".FBX\"));\n\n            if (path.EndsWith(\".FBX\")) //大写的FBX不会进OnPostprocessModel函数\n\n            {\n\n                GameObject model = AssetDatabase.LoadAssetAtPath<GameObject>(path);\n\n                ModelImporter import = AssetImporter.GetAtPath(path) as ModelImporter;\n\n                FixedModelImport(import, model);\n\n            }\n\n        }\n\n    }\n\n    void OnPostprocessModel(GameObject model)\n\n    {\n\n        var modelImporter = assetImporter as ModelImporter;\n\n        if (modelImporter == null)\n\n        {\n\n            return;\n\n        }\n\n        FixedModelImport(modelImporter, model);\n\n    }\n\n}\n```\n\n- 提问者：唐\n- 提问时间：2021-05-11 02:08:56\n\n## 我的回答\n\n我这边试验过，不会变回来啊，会不会是把工程回滚了。另外这个脚本的ReimportAllModel只对本身就没有勾选Import Materials的模型有效。\n\n- 回答时间：2021-05-11 05:49:23\n- 最后更新：2021-05-11 05:50:10\n- 采纳状态：未采纳\n\n## 来源与关系\n\n- 上位集合：[[10-计算机、信息技术与工程/05-游戏图形与运行时/我的UWA问答/我的UWA问答|我的 UWA 问答]]\n- UWA 标签：内存管理\n- 原始问题：[本地删除FBX的DefaultMaterial在unity重启后无效](https://answer.uwa4d.com/question/609906386bb31032f97915ae)\n- 源页最后更新：2021-05-11 17:17:21\n"
}
