ニュース

Top  >   15. C#とMonoBehaviour  >   Q, ゲームを終了しても、スクリプトで変更したScriptableObjectの値が残ってしまう

Q, ゲームを終了しても、スクリプトで変更したScriptableObjectの値が残ってしまう

2026/03/18

メインコンテンツへスキップ
< すべてのカテゴリに戻る

A,結論

  • ScriptableObject を実行時に直接書き換えると、Editor 上ではアセット自体に変更が残ることがあります。
  • ランタイム変更用には複製を使う設計が安全です。

原因 / 背景

  • ScriptableObject はアセット参照で共有されるため、元データを直接変更するとプレイ後も値が残ったように見えることがあります。
  • 特に Editor 再生時は運用ミスに気づきにくいです。

実装 / 手順

  1. 初期値として保持したい ScriptableObject と、実行時に使うインスタンスを分けます。
  2. 起動時に Instantiate で複製し、ゲーム中は複製側だけを更新してください。
  3. 保存対象にしたい値だけを JSON やセーブデータへ書き出す構成にすると管理しやすくなります。

※ 実機確認が必要な項目は、Editor だけで判断せず対象デバイスでも必ず動作確認してください。

難易度:Level 3(中級)
対象プラットフォーム:PC,Android,iOS,Visual Studio,Unity
関連キーワード:データ,リセット,仕様,保存

Level 3-5 向けバナー 1Level 3-5 向けバナー 2