用途
- 导入图片时自动修改导入格式——节省每次导入图片需要手动设置
导入图片时,API事件接口
// 继承 AssetPostprocessor 资源管理,用于接收事件
public class TextureConfig : AssetPostprocessor
{
// 当导入图片资源时,触发该事件
void OnPreprocessTexture()
{
// assetImporter.assetPath
// 可以获取到导入的图片资源路径,根据这个可以参数可以写适合自己的图片配置规则
// 例1:检测是否是固定文件夹的图片,取消勾选 "Generte Mip Maps"
if (assetImporter.assetPath.Contains("Assets/Resources/Texture/Common"))
{
// 转成图片类型的导入管理
TextureImporter texture_importer = assetImporter as TextureImporter;
// 取消勾选 "Generte Mip Maps"
texture_importer.mipmapEnabled = false;
}
// 例2:特定的图片命名规则。比如图片名最后为 "@sprite" 的修改为 "Sprite(2D and UI)"
else if(assetImporter.assetPath.Contains("@sprite"))
{
// 转成图片类型的导入管理
TextureImporter texture_importer = assetImporter as TextureImporter;
// 修改为 "Sprite(2D and UI)"
texture_importer.textureType = TextureImporterType.Sprite;
}
}
}
相关API
1. AssetPostprocessor.OnPreprocessTexture()
描述
在运行纹理导入器之前,将此函数添加到子类以获取通知
这使您可以为导入设置设置默认值
如果要更改纹理的压缩格式,请使用此回调
例子
自动将文件名中带有“ _bumpmap”的任何纹理文件转换为法线贴图。
using UnityEngine;
using UnityEditor;
class MyTexturePostprocessor : AssetPostprocessor
{
void OnPreprocessTexture()
{
if (assetPath.Contains("_bumpmap"))
{
TextureImporter textureImporter = (TextureImporter)assetImporter;
textureImporter.convertToNormalmap = true;
}
}
}
2. TextureImporter
字段 | 描述 |
---|---|
allowAlphaSplitting | 允许在相关平台上对此纹理进行Alpha拆分 |
alphaIsTransparency | 如果提供的Alpha通道是透明的,请启用它以对颜色进行预过滤以避免过滤伪影 |
alphaSource | 选择如何生成导入纹理的Alpha |
alphaTestReferenceValue | 返回或分配Alpha测试参考值 |
androidETC2FallbackOverride | 不支持ETC2的Android设备上的ETC2纹理解压缩回退替代 |
anisoLevel | 纹理的各向异性过滤级别 |
borderMipmap | 生成mipmap时,纹理边框保持相同吗? |
compressionQuality | 纹理压缩的质量在[0…100]范围内 |
convertToNormalmap | 转换高度图为法线图? |
crunchedCompression | 尽可能使用压缩压缩 |
fadeout | 淡化色阶为灰色? |
filterMode | 纹理的过滤模式 |
generateCubemap | 立方体贴图生成模式 |
heightmapScale | 高度图中的凹凸不平量 |
isReadable | 如果要从脚本读取纹理数据,请将其设置为true。将其设置为false可以防止脚本读取纹理数据 |
maxTextureSize | 最大纹理大小 |
mipMapBias | 纹理的Mip贴图偏差 |
mipmapEnabled | 生成Mip地图 |
mipmapFadeDistanceEnd | 纹理完全消失的Mip级别 |
mipmapFadeDistanceStart | Mip级别,纹理开始淡出 |
mipmapFilter | Mipmap过滤模式 |
mipMapsPreserveCoverage | 启用或禁用保留范围的Alpha MIP映射 |
normalmapFilter | 法线贴图过滤模式 |
npotScale | 非纹理两种纹理的缩放模式 |
qualifiesForSpritePacking | 如果此TextureImporter设置用于Sprite打包,则返回true |
secondarySpriteTextures | 导入的精灵的辅助纹理 |
spriteBorder | 生成的精灵的边框大小 |
spriteImportMode | 为“精灵”纹理选择“单一”或“手动”导入模式 |
spritePackingTag | 选择Sprite包装标签 |
spritePivot | Sprite对象的坐标空间中图形所在的点 |
spritePixelsPerUnit | 精灵中与世界空间中的一个单位相对应的像素数 |
spritesheet | 表示地图集与各个子画面图形对应的部分的数组 |
sRGBTexture | 纹理是否存储颜色数据 |
streamingMipmaps | 为此纹理启用mipmap流 |
streamingMipmapsPriority | 减少内存大小以达到内存预算时此纹理的相对优先级 |
textureCompression | 压缩导入的纹理 |
textureShape | 导入纹理的形状 |
textureType | 我们在这里处理哪种类型的纹理 |
wrapMode | 纹理坐标环绕模式 |
wrapModeU | 纹理U坐标环绕模式 |
wrapModeV | 纹理V坐标环绕模式 |
wrapModeW | 纹理W坐标环绕模式 |
如果有帮到你,给个赞呗~(●’◡’●)