Unity导入资源自动识别,分类存放

导入资源自动识别分类
Odin绘制分类设置

public class ToolsSettings : GlobalConfig<ToolsSettings>
{
    //动画资源自动分类处理 fbx animationClip Avatar 自动分类,所有资源自动处理型配置

    [LabelWidth(30)]
    [BoxGroup("AnimClip")]
    [HorizontalGroup("AnimClip/AnimationClip")]
    [FolderPath]
    public string Anim;

    [LabelWidth(30)]
    [BoxGroup("AnimClip")]
    [HorizontalGroup("AnimClip/AnimationClip", width: 80)]
    public string Mark;

    [LabelWidth(75)]
    [FolderPath]
    [BoxGroup("AnimationClip")]
    [LabelText("AvatarPath")]
    public string Avatarfolder;

    [LabelWidth(50)]
    [FolderPath]
    [BoxGroup("Fbx")]
    [LabelText("FBXPath")]
    public string FBXfolder;
}

以Animation的分类为例,在Odin中设置动画资源的标记为@,非@的则是fbx模型
设置Avatar 存放位置,
设置AnimClip存放位置,
设置Fbx资源存放位置,

在这里插入图片描述

Odin绘制设置完毕,开始写具体代码
根据unity的手册,可以知道,核心API是AssetPostprocessor,继承AssetPostprocessor,当unity资源导入之后,就会调用一系列方法。比如OnPreprocessModel,OnPostprocessModel,具体可以看手册给的示例
https://docs.unity3d.com/ScriptReference/AssetPostprocessor.html
动画资源分离参考代码:

using System.IO;
using UnityEditor;
using UnityEngine;

public class AnimationSpreat : AssetPostprocessor
{
    private void OnPreprocessModel()
    {
        if (assetPath.Contains(ToolsSettings.Instance.Mark))
        {
            ModelImporter modelImporter = assetImporter as ModelImporter;
            modelImporter.materialImportMode = ModelImporterMaterialImportMode.None;
            //动画禁止材质导入
            modelImporter.materialImportMode = ModelImporterMaterialImportMode.None;
            //设置为Humannoid
            modelImporter.animationType = ModelImporterAnimationType.Human;
            //创建Avata
            modelImporter.avatarSetup = ModelImporterAvatarSetup.CreateFromThisModel;
        }
    }

    private void OnPostprocessModel(GameObject g)
    {
        string name = g.name;
        Debug.Log("动画资源分离" + assetPath + "   ");
        EditorApplication.delayCall += () =>
        {
            if (assetPath.Contains(ToolsSettings.Instance.Mark))
            {
                //copy 动画
                var assets = AssetDatabase.LoadAllAssetRepresentationsAtPath(assetPath);

                //copy Avata
                foreach (var obj in assets)
                {
                    Debug.Log("FBX中的资源" + obj.name);

                    if (obj is AnimationClip)
                    {
                        var newClip = UnityEngine.Object.Instantiate(obj);
                        AssetDatabase.CreateAsset(newClip, ToolsSettings.Instance.Anim + "/" + name + ".anim");
                        AssetDatabase.SaveAssets();
                        AssetDatabase.Refresh();
                    }

                    if (obj is Avatar)
                    {
                        var newAvatar = UnityEngine.Object.Instantiate(obj);
                        AssetDatabase.CreateAsset(newAvatar, ToolsSettings.Instance.Avatarfolder + "/" + name + ".asset");
                        AssetDatabase.SaveAssets();
                        AssetDatabase.Refresh();
                    }
                }

                //move fbx
                if (assetPath != ToolsSettings.Instance.FBXfolder)
                {
                    Debug.Log("移动资源" + assetPath);
                    string path = Path.GetFileName(assetPath);
                    AssetDatabase.MoveAsset(assetPath, ToolsSettings.Instance.FBXfolder + "/" + path);
                }
            }
            else
            {
                Debug.Log("导入模型,创建控制器" + assetPath);
            }
        };
    }
}

在这里插入图片描述

其实动画资源 只需要拷贝出Clip即可,剩下的都可以删除,FBX与avata 只要模型

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity导入资源是指将外部资源文件(如图像、音频、视频等)引入到Unity项目中的过程。以下是导入资源的详细解析: 第一步是选择要导入资源文件,并将其复制到Unity项目的Assets文件夹中。这些资源文件可以来自于本地计算机上的文件夹、其他Unity项目中的资源文件,或者从互联网上下载的资源。 第二步是打开Unity编辑器,在项目窗口中选择Assets文件夹,并点击右键选择“Import New Asset”或者直接拖拽资源文件到Unity编辑器中。如果资源文件是图片或者音频文件,Unity会自动为其创建一个对应的材质或音频剪辑。 第三步是在导入资源的过程中,Unity会根据资源类型对其进行解析和处理。对于图片资源Unity会根据其格式(如PNG、JPEG等)将其转换为适用于游戏引擎的纹理格式,如贴图。对于音频资源Unity会将其转换为可被游戏引擎播放的音频剪辑。 第四步是在Unity编辑器中对导入资源进行设置和调整。例如,对于导入的图片资源,可以设置其尺寸、是否启用alpha通道、压缩质量等。对于音频资源,可以调整音频的音量、循环设置等。 最后,导入完成后,可以在Unity项目中的其他场景、脚本、动画等中使用这些导入资源。可以通过引用资源的名称或者路径,在代码中获取和操作这些资源。 通过以上步骤,Unity可以方便地将外部资源导入到项目中,并在游戏开发过程中使用、修改和管理这些资源,从而实现游戏的各种功能和效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值