「Inspectorで数値を変えたのに、気づいたら元に戻ってる…」
Unityを触り始めた頃、この現象で混乱した人はかなり多いと思います。
特にありがちなのが、Play Mode中に頑張って調整した値が、停止した瞬間に全部消えてしまうパターンです。
私も最初の頃、「やっとちょうどいい値見つけた!」と思った直後に全部リセットされて、しばらく画面を見つめて固まったことがあります(笑)
ただ、こうした「変更が保存されない」「値が戻る」問題は、Unityが壊れているわけではなく、ほとんどの場合はUnity特有の保存仕様が原因です。
Unityでは、
- Play Mode中の変更
- Sceneの保存
- PrefabのOverride
この3つを混同すると、かなり高確率で「保存したはずなのに戻る」が発生します。
逆に言えば、この違いさえ整理できると、原因の切り分けが一気にラクになります。
「これは正常な挙動なのか?」
「どこを保存すればよかったのか?」
「ApplyとRevertって結局どっち押せばいいの?」
こういった疑問を、実際によくある失敗例と一緒に整理していきます。
Unityの変更が保存されない原因一覧
まず最初に結論からいうと、Unityで「変更が戻る」原因は、ほとんどの場合この3つです。
- Play Mode中に変更していた
- Scene保存とPrefab保存を混同していた
- Prefab Overrideの状態を理解せず編集していた
特に初心者のうちは、1つ目の「Play Mode中の編集」がかなり多いです。
Unityでは、再生中にInspectorの値を調整できるので、「普通に保存される編集」に見えるんですよね。
でも実際には、Play Mode中の変更は“実験用の一時状態”として扱われることがあります。
なので、停止ボタンを押した瞬間に、再生前の状態へ戻ってしまいます。
一方で、Scene保存やPrefab関連は、「保存先を間違えている」パターンが多めです。
例えばこんなケースがあります。
| 症状 | 原因になりやすいもの |
|---|---|
| 再生停止後に値が戻る | Play Mode中の編集 |
| Sceneを開き直すと配置が消える | Scene未保存 |
| Prefabの値だけ戻る | Override未Apply |
| Applyしたつもりが反映されない | Prefab Modeや別Instanceを編集 |
ここで大事なのは、「正常な仕様」と「本当におかしい状態」を切り分けることです。
例えば、
- Play Mode停止後に値が戻る
- Revertを押して変更が消える
- Scene未保存で閉じて配置が戻る
これらは基本的にUnityの正常な挙動です。
逆に、
- 保存しているのに毎回値が戻る
- Play Mode外でも変更が保持されない
- 実行時に勝手に数値が上書きされる
このあたりは、スクリプトやScriptableObject、Editor拡張など別の原因が関係している可能性があります。
ScriptableObject関連で値が戻る場合は、こちらの記事も参考になります。

まずは「今どこを編集していたのか」を整理するだけでも、かなり原因を絞り込めます。
Play Modeの変更が消える理由
Play Mode中の変更は一時的
Unityで最も多い「保存したのに戻った」原因が、Play Mode中の編集です。
例えば、こんな流れですね。
- ゲームを再生する
- InspectorでSpeedやHPを調整する
- 「お、ちょうどいい!」となる
- 停止ボタンを押す
- 値が全部元に戻る
最初は「Unity壊れた?」と思いやすいんですが、これは基本的に正常な仕様です。
UnityのPlay Modeは、“ゲームを安全にテストするための実行環境”として動いています。
つまり、再生中に行われた変更は、ゲームテスト用の一時データとして扱われることがあるんですね。
もしPlay Mode中の変更が全部そのまま保存されてしまうと、
- テスト中にキャラが変な場所へ移動した
- 実験で入れた値を戻し忘れた
- デバッグ用設定が本番に残った
こんな事故が頻発してしまいます。
そのためUnityは、停止時に「再生前の状態へ戻す」という仕組みになっています。
特に初心者のうちは、Play Mode中かどうかを意識せず編集してしまいやすいです。
慣れるまでは、Inspectorを触る前にPlayボタンを見るクセをつけるとかなり防げます。
Play Mode中の値を残す方法
とはいえ、再生中に見つけた「ちょうどいい値」を残したい場面ってありますよね。
そんな時によく使われるのが、Componentのコピーです。
手順はこんな感じです。
- 変更したComponent右上のメニューを開く
- 「Copy Component」を押す
- Play Modeを停止する
- 同じComponentで「Paste Component Values」を押す
これなら、再生中に調整した値を比較的安全に戻せます。
私も細かい移動速度やカメラ感度を調整する時によく使っています 🙂
ほかにも、
- GameObjectをコピーしておく
- 一時的にPrefab化する
といった方法もあります。
ただし、コンポーネント種類やUnityバージョンによっては、完全に同じ状態を復元できない場合もあります。
重要な調整値は、スクショやメモも残しておくと安心です。
再発防止はPlay Mode Tintが便利
「再生中なのに気づかず編集してしまう…」
これをかなり減らせるのが、Play Mode Tintです。
これは、Play Mode中だけUnityエディタ全体の色味を変える機能です。
設定場所はこちらです。
- Edit
- Preferences
- Colors
- Playmode tint
ここで少し赤っぽい色や青っぽい色にすると、「今は再生中だ」と視覚的に分かりやすくなります。
慣れてくると無意識で判別できるようになるので、かなりおすすめです。

特に長時間作業している時ほど、うっかり編集事故が減ります。
Scene保存されない時の確認点
Scene変更はCtrl+Sで保存する
Unityでは、Scene上の変更は自動保存されないことがあります。
例えば、次のような操作ですね。
- GameObjectを追加する
- オブジェクトを移動する
- InspectorでTransform値を変更する
- LightやCameraの設定を変える
これらは「Sceneの変更」として扱われます。
なので、変更後は明示的に保存が必要です。
保存方法はシンプルで、
- Ctrl + S(MacはCmd + S)
- File → Save
これで現在のSceneを保存できます。
意外と見落としやすいのが、「Hierarchyに変更は見えている=保存済み」ではないことです。
例えば、Scene名やHierarchyに「*(アスタリスク)」が付いている場合、未保存変更が残っているサインです。
この状態でUnityを閉じたりSceneを切り替えると、変更が消えることがあります。
特に初心者のうちは、「動いてるから保存されてる」と思いやすいので注意したいポイントです。
Project保存とScene保存は別
ここで少しややこしいのが、Unityには“保存対象が複数ある”ことです。
例えば、同じInspector操作でも、保存先が違う場合があります。
| 変更内容 | 保存対象 |
|---|---|
| Scene上オブジェクトの位置変更 | Scene保存 |
| Prefab Asset自体の編集 | Prefab保存 |
| Texture Import Settings変更 | Applyが必要 |
| Project Settings変更 | Project設定として保存 |
つまり、「Ctrl+Sを押したから全部保存された」とは限らないんですね。
例えばTextureのImport Settingsを変更した場合、Inspector下部の「Apply」を押さないと設定が反映されないことがあります。
逆に、Scene保存だけしてもPrefab変更は保存されていない、というケースもあります。
Unityで保存ミスを減らすコツは、「今どの種類のデータを編集しているか」を意識することです。
最初は少し混乱しますが、
- Scene
- Prefab
- Project設定
この3つを分けて考えられるようになると、一気にトラブルが減ります。
Prefab Mode中は保存対象に注意
Prefab Modeを使っている時は、さらに保存対象を勘違いしやすくなります。
Prefab Modeとは、Prefabを単独で編集する専用モードのことです。
例えばHierarchy上のPrefabをダブルクリックすると、Prefab専用編集画面へ入ることがあります。
この状態では、SceneではなくPrefab Assetそのものを編集しています。
つまり、ここで保存されるのはPrefab側です。
なので、
- Prefabは更新された
- でもScene側は保存されていない
という状態が普通に起こります。
特に初心者のうちは、「今Sceneを編集しているのか」「Prefab本体を編集しているのか」が分からなくなりやすいです。
もしPrefabの基本概念がまだあいまいなら、こちらの記事もかなり役立ちます。

慣れるまでは、編集前に上部のHierarchy表示を見て、「今どこを編集しているか」を確認するクセをつけるのがおすすめです。
Prefabの値が戻る原因と対処法
Prefab InstanceとPrefab Assetの違い
Prefabまわりで混乱しやすいのが、「Scene上のオブジェクト」と「元Prefab」が別物として管理されていることです。
Unityでは、Projectウィンドウ内にあるPrefab本体を「Prefab Asset」、Sceneへ配置した複製を「Prefab Instance」と呼びます。
例えば、Enemy.prefabをSceneへ3体配置した場合、
- Project内のEnemy.prefab → 元データ
- Scene上のEnemy → Instance
という関係になります。
ここで重要なのが、Scene上のInstanceを編集しても、元Prefabには自動反映されないことです。
初心者のうちは、
「Scene上でHPを100→200に変更したから、Prefab本体も変わったはず」
と思いやすいんですが、実際にはInstance側だけ変更されているケースがかなり多いです。
そのため、別SceneへPrefabを置いた時に、
「あれ?HP200じゃない…」
となるわけですね。
この“Instanceだけ変更された状態”を、UnityではOverride(オーバーライド)と呼びます。
Overrideは太字と青線で見分ける
Prefab Override状態は、Inspectorを見るとある程度判断できます。
Overrideされている項目は、
- 値が太字になる
- 左側に青い線が付く
といった表示になります。
例えば、PrefabのMoveSpeedが5なのに、Scene上だけ10へ変更している場合、MoveSpeed欄が強調表示されます。
これを見落とすと、
- どの値がPrefab本体なのか
- どの値がScene専用変更なのか
が分からなくなりやすいです。
特にチーム制作では、誰かがOverrideした値に気づかず、「Prefab変えたのに反映されない!」となることもあります。
慣れないうちは、Inspectorで太字や青線を見つけたら、「Overrideかも?」と疑うクセをつけるとかなり事故が減ります。
ApplyとRevertの使い分け
Override状態になると、Inspector上部の「Overrides」メニューからApplyやRevertを選べるようになります。
ここがPrefab初心者最大の山場です(笑)
ざっくり整理すると、意味はこうなります。
| 操作 | 意味 |
|---|---|
| Apply | 変更をPrefab本体へ反映する |
| Revert | 変更を捨ててPrefab状態へ戻す |
例えば、Scene上の敵HPを200へ変更して、「この設定を全部の敵に使いたい」と思った場合はApplyです。
逆に、「やっぱり元へ戻したい」ならRevertになります。
初心者がやりがちなのが、間違えてRevert Allを押してしまうパターンです。
これをやると、Scene上で調整した内容がまとめて消えることがあります。
特に怖いのが、「保存操作っぽい見た目」に見えることなんですよね。
でもRevertは、“元へ戻す”操作です。
なので、迷った時はまずApply Selectedのような個別操作を使うのがおすすめです。
一気にApply AllやRevert Allを使うより、安全に確認しながら進められます。
Prefab生成や管理そのものに不安がある場合は、こちらの記事もあわせて読むと理解しやすいです。
3分でできる原因診断チェック
上から順に確認するチェックリスト
「結局、自分はどのパターンなんだろう?」
そんな時は、次の順番で確認するとかなり原因を絞り込みやすいです。
実際、Unityの“変更が戻る問題”は、確認順を間違えると迷子になりやすいんですよね。
まずは難しいことを考えず、上から順番にチェックしてみてください。
- Playボタンが青い状態で編集していなかったか
- 変更後にPlay Modeを停止していないか
- Scene名やHierarchyに「*」が付いていないか
- Ctrl + SでScene保存したか
- Prefab Modeに入ったまま編集していないか
- Inspectorに太字や青線が出ていないか
- ApplyではなくRevertを押していないか
- スクリプトが実行時に値を書き換えていないか
特に最初の3つだけで解決するケースはかなり多いです。
逆に、いきなり「Unityのバグかも?」と考えてしまうと、原因切り分けが難しくなります。
私も最初の頃は、「絶対Unityがおかしい!」と思っていたら、Play Mode中に編集していただけ…ということが何回もありました(笑)
慣れてくると、
- Play Modeか?
- Scene保存か?
- Prefab Overrideか?
この3つを最初に疑うクセが付きます。
判断に迷った時の切り分け
それでも原因が分からない時は、「いつ値が戻るか」を観察するとかなり判断しやすくなります。
| 症状 | 疑うポイント |
|---|---|
| 停止した瞬間に戻る | Play Mode中の変更 |
| Sceneを開き直すと戻る | Scene未保存 |
| Prefabだけ戻る | Override未Apply |
| 実行開始時に値が変わる | スクリプト上書き |
| ScriptableObjectだけ戻る | 保存仕様やSerialize関連 |
例えば、「実行した瞬間にTransform.positionが変わる」場合、Scene保存ではなくスクリプト側で位置を書き換えているケースがあります。
こういう時は、StartやAwakeで値を代入していないか確認してみてください。
Transformやスクリプト上書き周りで困っている場合は、こちらの記事も役立ちます。
また、ScriptableObjectだけ毎回戻る場合は、Scene保存やPrefabとは別問題の可能性があります。
Unityでは、「どのデータがどこに保存されるか」で挙動がかなり変わるんですね。

なので、症状が出るタイミングを観察するだけでも、かなり原因特定しやすくなります。
よくある誤解と注意点
Ctrl+Sですべて保存されるわけではない
Unity初心者の頃にかなり混乱しやすいのが、「Ctrl + Sを押したのに戻った」という問題です。
これは、Unityが“保存対象ごとに管理が分かれている”ことが原因になっているケースが多いです。
例えば、
- Scene上の配置変更 → Scene保存
- Prefab本体の変更 → Apply
- Import Settings変更 → Apply
- Project Settings変更 → Project設定保存
という感じで、保存方法が全部同じではありません。
特にPrefab関連は、「Ctrl + SしたからPrefabも更新された」と思いやすいんですよね。
でも実際には、Sceneだけ保存されて、Prefab Overrideは残ったままということも普通にあります。
慣れてくると、「今どのデータを編集しているか」を自然に意識できるようになります。
逆にここを曖昧なまま作業すると、保存事故がかなり増えます。
Inspectorの値は常に正式データではない
Inspectorに表示されている値を見て、「これが現在の正式な値なんだな」と思いやすいんですが、実はそうとは限りません。
例えばPlay Mode中は、実行時だけ変更されているRuntime値が表示されている場合があります。
つまり、Inspector上では「MoveSpeed = 10」に見えていても、停止すると元の5へ戻ることがあるんですね。
また、スクリプト側で毎フレーム値を書き換えているケースもあります。
例えばこんなコードです。
void Start()
{
speed = 5;
}
この場合、Inspectorで10へ変更していても、実行時に5へ戻されることがあります。
なので、「Inspectorで見えている値=保存済み」とは限らないんです。
特にPlay Mode中は、
- 今見えている値なのか
- 保存される値なのか
を分けて考えるのが大切です。
ゲームのセーブ機能とは別問題
もう1つ混同されやすいのが、「Unity Editorの保存」と「ゲーム内セーブ」の違いです。
今回の記事で扱っているのは、開発中のSceneやPrefab、Inspector値の保存です。
一方で、ゲームプレイヤーの進行状況を保存する仕組みは別物になります。
例えば、
- PlayerPrefs
- JSON保存
- Easy Save
などは、“ゲームデータを保存するための仕組み”です。
なので、
「Scene保存したのに、ゲームの所持金が残らない」
みたいな場合は、今回の問題とは別原因なんですね。
ゲーム内セーブを実装したい場合は、Easy Saveのような定番アセットもかなり便利です。
Easy Save
✅アセットストアでチェックする
セーブ方式そのものを比較したい場合は、こちらの記事も参考になります。
再発防止に役立つ作業ルール
編集前にPlay Modeを確認する
変更が消える事故を減らすなら、まず一番効果が大きいのは「編集前にPlay Modeを確認する習慣」です。
特に長時間作業していると、再生停止したつもりが、まだPlay Mode中だった…というのは本当によくあります。
私も調整作業に集中している時ほど、うっかりやりがちです(笑)
おすすめなのは、Inspectorを触る前に毎回この3つを見ることです。
- Playボタンが青くなっていないか
- Hierarchyに未保存マークが出ていないか
- Prefab Modeに入っていないか
これだけでも、かなり保存事故を減らせます。
さらに、Play Mode Tintを設定しておくと、「今は再生中」が視覚的に分かりやすくなります。
特に夜作業している時ほど効果を実感しやすいです。
Prefab変更はApply前に確認する
Prefab関連で事故を減らすコツは、「Applyを押す前に影響範囲を考える」ことです。
Applyは便利なんですが、Prefab本体へ反映されるので、すべてのInstanceへ影響する可能性があります。
例えば、
- 敵のHPを調整した
- Scene専用の変更のつもりだった
- Apply Allした
- 別Sceneの敵まで全部変わった
こんなことも起こります。
逆にRevertは、「変更を捨てる」操作です。
なので、ApplyとRevertは“保存ボタン”ではなく、“変更の反映先を決める操作”として考えると理解しやすいです。
慣れるまでは、Apply Allよりも、個別Applyを優先するのがおすすめです。
影響範囲を確認しながら進められるので、安全に作業できます。
Inspector調整はメモを残す
Unity開発では、「どの値が良かったか分からなくなる問題」も結構あります。
特に、
- 移動速度
- カメラ感度
- ジャンプ力
- アニメーション速度
こういう微調整系は、あとから「あの値なんだっけ…?」となりやすいです。
なので、重要な調整をする時は、
- 変更前後をメモする
- スクショを撮る
- コメントを残す
このあたりを習慣化するとかなりラクになります。
中級者以上になると、Inspector整理や値管理用のEditor拡張を使う人も増えてきます。
特にOdin Inspectorは、Inspectorの視認性や管理効率をかなり改善しやすい定番アセットです。
Odin Inspector
✅アセットストアでチェックする
Editor拡張そのものに興味がある場合は、こちらの記事もおすすめです。
まとめ:変更が戻る時は順番に確認
Unityで「保存したはずなのに戻った」という時は、まず原因を順番に切り分けるのが大切です。
特に確認優先度が高いのは、この3つです。
- Play Mode中に編集していなかったか
- Scene保存をしていたか
- Prefab Overrideを理解せず変更していなかったか
実際、この3つだけで解決するケースはかなり多いです。
逆に、いきなり「Unityの不具合だ」と考えてしまうと、原因がどんどん分からなくなりやすいんですよね。
慣れてくると、
- 今どこを編集しているか
- どこへ保存される変更なのか
- 一時変更なのか正式保存なのか
を自然に意識できるようになります。
私も最初の頃は、Play Mode停止後に値が消えるたびにショックを受けていました(笑)
でも、Unityは「Scene」「Prefab」「Runtime」を分けて管理している、と理解してからかなり混乱が減りました。
特にPrefabのApply/Revertは、最初は怖く感じやすいです。
なので慣れるまでは、
- Apply Allを連打しない
- 個別Applyで確認する
- 重要な調整はメモを残す
このあたりを意識すると、かなり安全に作業できます。

「今どこを編集しているのか」を見る習慣が付くと、Unityの保存周りは一気に分かりやすくなります。
よくある質問(FAQ)
- QPlay Mode中に変更した値は絶対に残せませんか?
- A
完全に自動保存されるわけではありませんが、値を残せる場合はあります。
よく使われる方法は、
- Copy Component
- Paste Component Values
- GameObjectコピー
- 一時Prefab化
などです。
ただし、コンポーネント種類やUnityバージョンによっては、同じ状態を完全再現できないケースもあります。
特に重要な調整値は、スクショやメモも残しておくと安心です。
- QScene保存とPrefabのApplyはどちらを先にするべきですか?
- A
どちらを編集したかで判断するのがおすすめです。
例えば、
- Scene上だけの配置変更 → Scene保存
- Prefab本体へ反映したい変更 → Apply
という考え方ですね。
初心者のうちは、「全部Ctrl + Sで保存される」と思いやすいんですが、Unityでは保存対象が分かれています。
「今どこを編集しているか」を意識すると判断しやすくなります。
- Q保存しているのに実行すると値が戻るのはなぜですか?
- A
この場合は、スクリプト側で値を書き換えている可能性があります。
例えば、StartやAwakeで初期値を代入しているケースですね。
void Start() { speed = 5; }このようなコードがあると、Inspectorで別値を入れていても、実行時に上書きされることがあります。
また、
- ScriptableObject読み込み
- セーブデータ復元
- 外部設定ファイル
などが影響しているケースもあります。
「いつ値が戻るのか」を観察すると、かなり原因を切り分けやすくなります。













※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。