以下の内容はhttps://indie-du.com/entry/2022/07/17/142805より取得しました。


Unity Editor : Texture2D を png 形式で保存してアセットとしてインポートする

Texture2D で動的に生成したテクスチャを png 形式で保存、その後すぐアセットとしてスクリプトで扱いたい場合が結構あるのですが、クラスやメソッドによってパスの扱い方に差があったりして結構めんどうなのでスニペットを置いておきます。

        var path = EditorUtility.SaveFilePanelInProject(title: "Save Texture", defaultName: "test", extension: "png", message: "Save Texture");

        if (!string.IsNullOrEmpty(path))
        {
            var png = texture.EncodeToPNG();
            File.WriteAllBytes(path, png);

            AssetDatabase.ImportAsset(path);

            var asset  = AssetDatabase.LoadAssetAtPath(path, typeof(Texture2D));
        }

まず EditorUtility.SaveFilePanelInProject ですが、SaveFilePanel でなくこっちのメソッドを使うことでプロジェクトからの相対パスが戻り値として取得できます。
SaveFilePanel だとフルパスが返ってきます。

AssetDatabase クラスでは基本的にプロジェクトからの相対パスを使うので、こちらのメソッドのほうが都合がいいです。

File.WriteAllBytesに渡っているのは相対パスですが...まあなんかいい感じに辻褄あわせてくれるんでしょう。たぶん。

AssetDatabase.ImportAsset で保存後すぐにインポートを走らせることで、その後のスクリプトでアセットをひろうことができます。

EditorUtility-SaveFilePanelInProject - Unity スクリプトリファレンス




以上の内容はhttps://indie-du.com/entry/2022/07/17/142805より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14