通过代码使Texture2D在Unity中可读
本文关键字:Unity Texture2D 代码 | 更新日期: 2023-09-27 18:16:56
我有一些AssetBundles,我想转换成。png图像文件。
他们是Texture2D资产,但问题是,因为他们不是读取启用,当我尝试用
将它们转换为PNGvar _bytes = _texture2d.EncodeToPNG();
命令,我得到以下错误消息:
Texture 'name of a Texture '是不可读的,不能从脚本访问纹理内存。可以使纹理可读纹理导入设置。
我真的无法访问纹理导入设置,因为它们来自资源包,所有东西都是用代码制作的。
有人有解决方法吗?
谢谢
这是一个可行的解决方案:
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();
}
}
在项目中选择纹理,打开检查器窗口,将纹理类型设置为"Advanced",切换为"启用读写"