【Unity】Texture を置き換える
Editor ツールで Texture を新規作成し保存する際には AssetDatabase.CreateAsset を利用する
しかし 既存の asset を置換する際に利用できるいい感じのものが(多分)無い
やろうと思えば FileUtil.ReplaceFile で仮にファイルを作って置換できるけど、仮に作らないといけないのが面倒だし
meta ファイルも書き換わるはずなので、meta ファイルのコピー処理も記述しないといけない
なので System.IO.File.WriteAllBytes を利用する
System.IO.File.WriteAllBytes を利用すると meta ファイルが書き換わらずテクスチャのみを変更することが可能である
利用例
public static void EditTexture(Texture2D src) { // パスを取得 var path = AssetDatabase.GetAssetPath(src); // テクスチャをコピーする var texture = new Texture2D(src.width, src.height, src.format, src.mipmapCount == -1); // Textureの加工 texture.Apply(); // パスを指定して Png を書き出し System.IO.File.WriteAllBytes(path.Replace('/', System.IO.Path.DirectorySeparatorChar), texture.EncodeToPNG()); // リフレッシュして Project 反映 AssetDatabase.Refresh(); }