栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity导入资源后的回调函数

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity导入资源后的回调函数

当我们导入资源时,有时需要对资源进行一些初始化修改或者格式规范等操作,例如,我们导入配置文件的时候,需要将编码格式规定为UTF-8,或者在做自动打包工具,打包AB时,导入模型的时候,按照设定的模板或者规则,对导入的FBX文件进行初始化(是否生成碰撞,支持读写,接受光照等),如果等到导入完成之后,重新生成AssetImporter再去修改,会增加性能消耗,所以我们最好是一步到位。

方法么,比较简单,主要用到AssetPostprocessor这个类,新建一个脚本,继承这个类,然后就可以开始我们的工作了,下面是一个简单的例子,这边只展示了模型的相关操作,其他的都类似。

using UnityEditor;
using UnityEngine;

public class AssetImportTest : AssetPostprocessor
{
    // 这个函数必须为静态的,其他随意,甚至可以是私有的,类似于update,start等生命周期,名字正确即可
    static void OnPostprocessAllAssets(           
        string[] importedAssets,
        string[] deletedAssets,
        string[] movedAssets,
        string[] movedFromAssetPaths)
    {
        foreach (var path in importedAssets)
        {
            Debug.Log("现在导入的文件的路径是" + path);
        }
        
    }
    public void OnPreprocessModel()
    {
        Debug.Log("导入模型前 OnPreprocessModel");
        ModelImporter modelImporter = (ModelImporter)assetImporter;
    }

    //--导入模型后
    public void OnPostprocessModel(GameObject gameObject)
    {
        Debug.Log("导入模型后 OnPostprocessModel");
    }

    
}

 下面是官网的内容,有详细的API说明UnityEditor.AssetPostprocessor - Unity 脚本 API

需要用的朋友可以自行取用

 

还有顺带说一下,如果导入的是unitypackage类型的文件,可以直接使用AssetDatabase类下面相关的API进行操作。UnityEditor.AssetDatabase - Unity 脚本 API

顺带附一个简单的使用示例

using UnityEditor;
using UnityEngine;

[InitializeOnLoad]
public static class Example
{
    static Example()
    {
        // .unitypackage 开始导入
        AssetDatabase.importPackageStarted += packageName =>
        {
            Debug.Log(packageName);
        };
        // .unitypackage 导入成功
        AssetDatabase.importPackageCompleted += packageName =>
        {
            Debug.Log(packageName);
        };
        // .unitypackage 取消导入
        AssetDatabase.importPackageCancelled += packageName =>
        {
            Debug.Log(packageName);
        };
        // .unitypackage 导入失败
        AssetDatabase.importPackageFailed += (packageName, errorMessage) =>
        {
            Debug.Log(errorMessage);
        };
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号