Unity导入资源(纹理 Texture 声音 Audio 模型 FBX)动态设置

创建下面脚本放在Editor文件夹下即可


using System.Collections;
using UnityEditor;
using UnityEngine;

public class EditorResourceSetting : AssetPostprocessor
{

    //模型导入之前调用  
    public void OnPreprocessModel()
    {
        //Debug.Log("OnPreprocessModel=" + this.assetPath);
    }
    //模型导入之后调用  
    public void OnPostprocessModel(GameObject go)
    {
        //Debug.Log("OnPostprocessModel=" + go.name);
    }
    //纹理导入之前调用,针对入到的纹理进行设置
    public void OnPreprocessTexture()
    {
        //string dirName = System.IO.Path.GetDirectoryName(assetPath);
        //string folderStr = System.IO.Path.GetFileName(dirName);

        Debug.Log("导入Texture图片前处理");
        TextureImporter textureImporter = (TextureImporter)assetImporter;
        string FileName = System.IO.Path.GetFileName(assetPath);
        string[] FileNameArray = FileName.Split(new string[] { "_" }, System.StringSplitOptions.RemoveEmptyEntries);
        if (FileNameArray.Length >= 3)
        {
            Debug.Log("符合命名规范图片");
            textureImporter.mipmapEnabled = false;//关闭mipmap
            //图片类型 
            textureImporter.textureType = TextureImporterType.Sprite;
            textureImporter.spriteImportMode = SpriteImportMode.Single;
            //图片PackingTag
            textureImporter.spritePackingTag = FileNameArray[0];
            //图片尺寸
            if (FileNameArray[1] == "bg")
            {
                Debug.Log("名称:" + textureImporter.GetDefaultPlatformTextureSettings().name);
                TextureImporterPlatformSettings TempTexture = new TextureImporterPlatformSettings();
                TempTexture.overridden = true;
                TempTexture.name = "Android";
                TempTexture.maxTextureSize = 512;
                TempTexture.format = TextureImporterFormat.ETC_RGB4;
                textureImporter.SetPlatformTextureSettings(TempTexture);
            }
            else if (FileNameArray[1] == "btn")
            {
                textureImporter.maxTextureSize = 256;
            }
            else if (FileNameArray[1] == "icon")
            {
                textureImporter.maxTextureSize = 64;
            }
            else
            {
                textureImporter.maxTextureSize = 1024;
                textureImporter.textureCompression = TextureImporterCompression.Compressed;
                textureImporter.crunchedCompression = true;
                textureImporter.compressionQuality = 60;
            }
            Debug.Log("名称:" + textureImporter.GetDefaultPlatformTextureSettings().name);

        }
        else
        {
            Debug.Log("不是指定文件");
        }
    }
    public void OnPostprocessTexture(Texture2D tex)
    {
        Debug.Log("导入Texture图片后处理");
    }


    public void OnPreprocessAudio()
    {
        Debug.Log("音频导前预处理");

        AudioImporterSampleSettings AudioSetting = new AudioImporterSampleSettings();
        //加载方式选择
        AudioSetting.loadType = AudioClipLoadType.CompressedInMemory;
        //压缩方式选择
        AudioSetting.compressionFormat = AudioCompressionFormat.Vorbis;
        //设置播放质量
        AudioSetting.quality = 0.1f;
        //优化采样率
        AudioSetting.sampleRateSetting = AudioSampleRateSetting.OptimizeSampleRate;


        AudioImporter audio = assetImporter as AudioImporter;
        //开启单声道 
        audio.forceToMono = true;
        audio.preloadAudioData = true;
        audio.defaultSampleSettings = AudioSetting;

    }
    public void OnPostprocessAudio(AudioClip clip)
    {
        Debug.Log("音频导后处理");
    }
    //所有的资源的导入,删除,移动,都会调用此方法,注意,这个方法是static的  (这个是在对应资源的导入前后函数执行后触发)
    public static void OnPostprocessAllAssets(string[] importedAsset, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        Debug.Log("OnPostprocessAllAssets");
        foreach (string str in importedAsset)
        {
            Debug.Log("importedAsset = " + str);
        }
        foreach (string str in deletedAssets)
        {
            Debug.Log("deletedAssets = " + str);
        }
        foreach (string str in movedAssets)
        {
            Debug.Log("movedAssets = " + str);
        }
        foreach (string str in movedFromAssetPaths)
        {
            Debug.Log("movedFromAssetPaths = " + str);
        }
    }

}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值