您的位置:首页 > 移动开发 > Unity3D

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

2017-06-26 18:05 666 查看

创建下面脚本放在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);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: