RenderTexture
を利用することで、Texture をコピーすることができます
※ Runtime もしくは UnityEditor上で
private static Texture2D TextureCopy(Texture source, string savePath) { var texture = new Texture2D(source.width, source.height, TextureFormat.RGB24, false); var renderTexture = new RenderTexture(texture.width, texture.height, 32); // もとのテクスチャをRenderTextureにコピー Graphics.Blit(source, renderTexture); RenderTexture.active = renderTexture; // RenderTexture.activeの内容をtextureに書き込み texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0); RenderTexture.active = null; // 不要になったので削除 RenderTexture.DestroyImmediate(renderTexture); // pngとして保存 System.IO.File.WriteAllBytes(savePath, texture.EncodeToPNG()); AssetDatabase.Refresh(); // 保存したものをロードしてから返す return AssetDatabase.LoadAssetAtPath<Texture2D>(savePath); }