Unity で変更のあったシーンファイルは、シーン名の横にアスタリスクがついて、変更があることを教えてくれます。
この時、右クリックで出るメニューの「Discard Changes」を実行することで、保存されていない変更をすべて破棄することができます。
スクリプトからこれを実行したいのですが、残念ながら public に公開されたメソッドとして用意されているものがありません。(見つからなかった)
が、 Unity がメニューから操作できるようになっているなら、それ用のスクリプトがあるはずだと思って探しました。
EditorSceneManager.ReloadScene() というメソッドを発見したので、リフレクションを使って無理やり実行します。
ソースコードとしては以下です。
DiscardChangeSceneAsset.DiscardChange() を呼べば、引数のシーンの変更が破棄されます。
一応 PlayMode 中は処理しないようにしています。
また、メニューから実行できる DiscardChanges は確認ダイアログなどを出したりしていますが、これは問答無用で破棄するので注意してください。
具体的な処理は以下辺りを参照ください。
github.com