---
title: "资源导入后处理&动画文件优化"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/unity-asset-import-postprocess-animation-optimization/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/游戏性能优化/资源导入后处理&动画文件优化.md"
content_hash: b813919527959da6c3c77cca0835321836b7e86f641312106c472418b9375c02
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 资源导入后处理&动画文件优化

> 创建时间：2020/7/16 22:08

**标签：**|  _优化_

## 资源导入的过程

当Unity检测到Assets目录当中的资源文件发生变化时，会根据资源的类型调用相应的Importer对资源进行导入。导入之前的文件，Unity其实是无法操作的。导入之后，会把资源放到Library文件夹中，Unity编辑器中进行操作的、Build导出的、打包成AssetBundle的文件，也就是Library当中的文件。在编辑器外移动文件或者Reimport文件，都会对资源进行重新import。

AssetPostPossessor会在资源导入后对进行处理，每次Import资源之后，都会调用OnPostprocessModel函数。

## 对动画资源进行优化

为了减小动画文件的精度，写了个脚本继承AssetPostPossessor，重写OnPostprocessModel函数，在每次Import动画文件之后，把动画里的scale曲线去掉，curve的浮点数精度降低，可以优化动画文件所占用的资源。

```csharp
string s1 = &quot;Hello &quot;;
string s2 = s1;
s1 += &quot;World&quot;;

System.Console.WriteLine(s2);
//Output: Hello

```

该后处理的函数，只影响导入到Library文件夹中的资源，而不会影响Assets文件夹下的资源（如fbx文件），因此，如果资源重新导入（在编辑器外移动位置、Reimport）时，该脚本不在项目当中，那么之前所做的优化就会失效。
在刚刚把该脚本放入项目中时，一定要Reimport资源，优化才会生效。

而对项目进行Build和AB打包时，使用的资源就是Library中的资源，打成的包是否优化，取决于Library中的资源是否
