我有一些我想要转换为.png图像文件的AssetBundles。
它们是Texture2D资产,但问题在于它们不是Read Enable,当时 我尝试用
将它们转换为PNGvar _bytes = _texture2d.EncodeToPNG();
命令,我收到以下错误消息:
纹理'纹理名称'不可读,无法从脚本访问纹理内存。你可以使纹理可读 纹理导入设置。
我真的无法访问纹理导入设置,因为它们来自资产包,一切都是用代码制作的。
有人有解决方法吗?
由于
答案 0 :(得分:9)
这是一个有效的解决方案:
public static void SetTextureImporterFormat( Texture2D texture, bool isReadable)
{
if ( null == texture ) return;
string assetPath = AssetDatabase.GetAssetPath( texture );
var tImporter = AssetImporter.GetAtPath( assetPath ) as TextureImporter;
if ( tImporter != null )
{
tImporter.textureType = TextureImporterType.Advanced;
tImporter.isReadable = isReadable;
AssetDatabase.ImportAsset( assetPath );
AssetDatabase.Refresh();
}
}
答案 1 :(得分:3)
在项目中选择纹理,打开检查器窗口,将纹理类型设置为"高级",切换"读取和写入已启用"。