static public void ImportTex(string textureAsset)
{
if (string.IsNullOrEmpty(textureAsset))
{
return;
}
AssetDatabase.Refresh(ImportAssetOptions.Default);
TextureImporter ti = (TextureImporter)TextureImporter.GetAtPath(textureAsset);
if (ti != null)
{
ti.isReadable = false;
ti.mipmapEnabled = false;
ti.alphaIsTransparency = true;
ti.filterMode = FilterMode.Bilinear;
ti.wrapMode = TextureWrapMode.Clamp;
ti.npotScale = TextureImporterNPOTScale.None;
ti.textureCompression = TextureImporterCompression.Uncompressed;
ti.SaveAndReimport();
}
else
{
Log.Error("Import Fail:{0}", textureAsset);
}
}
以上代码, 设置了alphaIsTransparency属性;或者在Unity的Inspector中,对纹理勾选这个选项,那么Unity会做什么事情呢?
如果有一张PNG图片, 95%的地方是全透明的,而在全透明的地方,RGB值是有意义的;
如果设置了alphaIsTransparency属性,则全透明的地方,Unity会将RGB值全部丢失!!!
所以:
如果要使用此纹理的4个通道做数据存储时(比如地型的4通道混合)
千万不能勾选alphaIsTransparency属性
除非此PNG图片仅仅用于UI显示;
这点在官方文档上没有说明!
博客介绍了在Unity里设置alphaIsTransparency属性或在Inspector中勾选该选项的影响。若有95%全透明且RGB值有意义的PNG图片,设置此属性会使全透明处RGB值丢失。使用纹理4通道存储数据时不能勾选,仅用于UI显示时除外,官方文档未说明这点。
807

被折叠的 条评论
为什么被折叠?



