目的
tsubakiさんが作られた UnityEditor におけるシーンのオートセーブ機能(https://gist.github.com/tsubaki/8709502) を紹介した記事が多いが、最新バージョン(2022.3.40f.1)だとエラーが出たので、同じエラーが出た場合の対処方法を紹介します。
環境
- Unity(2022.3.40f.1)
とりあえず今までやり方でやってみる
こちらのサイトを参考にそのまま導入する
1.tsubakiさん(https://gist.github.com/tsubaki/8709502) のGithubにとび、右上の「Download ZIP」でダウロード&解凍
2.解凍すると「AutoSave.cs」と「SceneBackup.cs」が出てくるのでUnityのEditorに「AutoSave.cs」をインポート
しかし、ここでエラー発生がしてしまう。エラー内容は
Assets\AutoSave.cs(24,6): error CS0619: 'EditorApplication.SaveAssets()' is obsolete: 'Use AssetDatabase.SaveAssets instead (UnityUpgradable) -> AssetDatabase.SaveAssets()'
Assets\AutoSave.cs(44,7): error CS0619: 'EditorApplication.SaveAssets()' is obsolete: 'Use AssetDatabase.SaveAssets instead (UnityUpgradable) -> AssetDatabase.SaveAssets()'
とのことで、どうやらEditorApplication.SaveAssets()の書き方は現在だと使えないみたい。AssetDatabase.SaveAssets()のほうを使ってねとのこと。
修正してみる
public class AutoSave
{
public static readonly string manualSaveKey = "autosave@manualSave";
static double nextTime = 0;
static bool isChangedHierarchy = false;
static AutoSave ()
{
IsManualSave = true;
EditorApplication.playmodeStateChanged += () =>
{
if ( IsAutoSave && !EditorApplication.isPlaying && EditorApplication.isPlayingOrWillChangePlaymode) {
IsManualSave = false;
if (IsSavePrefab)
AssetDatabase.SaveAssets()//<-EditorApplication.SaveAssets ();
if (IsSaveScene) {
Debug.Log ("save scene " + System.DateTime.Now);
EditorApplication.SaveScene ();
}
IsManualSave = true;
}
isChangedHierarchy = false;
};
nextTime = EditorApplication.timeSinceStartup + Interval;
EditorApplication.update += () =>
{
if (isChangedHierarchy && nextTime < EditorApplication.timeSinceStartup) {
nextTime = EditorApplication.timeSinceStartup + Interval;
IsManualSave = false;
if (IsSaveSceneTimer && IsAutoSave && !EditorApplication.isPlaying) {
if (IsSavePrefab)
EditorApplication.SaveAssets ();
if (IsSaveScene) {
Debug.Log ("save scene " + System.DateTime.Now);
AssetDatabase.SaveAssets()//<-EditorApplication.SaveScene ();
}
}
isChangedHierarchy = false;
IsManualSave = true;
}
};
これでエラーが解消されるはず。
AutoSaveの設定
「編集」->「環境設定」->「自動保存」にとび、「auto save」から始まる4つすべてにチェックを入れる。
Auto Saveの設定は完了です。これでUnityが落ちて今までの作業がパー👐になる事故が防げるので、プロジェクト作ったら皆さん絶対に入れましょう。
AutoSaveはプロジェクトを新規作成するごとに毎回入れる必要があります。
面倒くさいですが、新規プロジェクトを作成した際は、AutoSaveの導入を忘れないようにしましょう。