通过代码使Unity中的Texture2D可读

时间:2014-08-07 06:48:05

标签: c# unity3d texture2d

我有一些我想要转换为.png图像文件的AssetBundles。

它们是Texture2D资产,但问题在于它们不是Read Enable,当时 我尝试用

将它们转换为PNG
var _bytes = _texture2d.EncodeToPNG();

命令,我收到以下错误消息:

  

纹理'纹理名称'不可读,无法从脚本访问纹理内存。你可以使纹理可读   纹理导入设置。

我真的无法访问纹理导入设置,因为它们来自资产包,一切都是用代码制作的。

有人有解决方法吗?

由于

2 个答案:

答案 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)

在项目中选择纹理,打开检查器窗口,将纹理类型设置为"高级",切换"读取和写入已启用"。