質問: ExecuteInEditModeスクリプトで変更したものでも編集されたと検知されるようにしたい ExecuteInEditModeでオブジェクトを消去するスクリプト作ったので これをプレハブ画面で実行してみましたが一つ問題が この機能はボタンを押下することによってオブジェクトを削除する仕組みになっています ! ボタンが押下されオブジェクトが削除します。これでプレハブデータに変化が生じたのですが 下の画像にあるSAVEボタンがアクティブになりません 当然このまま編集画面脱出するとセーブ確認のダイアログが出てこないので困っています ! ExecuteInEditModeスクリプトで編集されたものでは、プレハブデータを変更されたという情報がUNITYに送られないのでしょうか? これは市販されているアセットツールを使用していても同様の不具合があり少し気になっていました プレハブ画面で編集されたと通知するスクリプトがあればよいのですが、ないでしょうか? 作成したスクリプトを走らせてもSAVEボタンがアクティブになるよう解決したい この対処法を探しています よろしくお願いいたします
回答: また私だ 公式リファレンス見る限り、そもそもExecuteInEditModeは プレハブモードを考慮していないようです。 とするとSaveを有効にすることはできなそうな感じがします。 Saveは有効にできませんが、スクリプトからプレハブを保存する処理を 書くことはできます。 if (GUILayout.Button("save", GUILayout.Width(256))) { string path=PrefabStageUtility.GetCurrentPrefabStage().prefabAssetPath; PrefabUtility.SaveAsPrefabAsset(obj.gameObject, path); // objはeditorで対象にしているコンポーネント } editorコンポーネントにこのような処理を追加することで、 プレハブを保存するボタンを作ることができます。 これで代用になるかはわかりませんがひとまず。