上記記事からの引用
[CreateAssetMenu(fileName = "ScoreScriptableObject", menuName = "ScoreScriptableObject", order = 0)] public class ScoreScriptableObject : UnityEngine.ScriptableObject, ISerializationCallbackReceiver { [SerializeField] private int initScore = default; [NonSerialized] public int Score; public void OnAfterDeserialize() { // Editor上では再生中に変更したScriptableObject内の値が実行終了時に消えない。 // そのため、初期値と実行時に使う変数は分けておき、初期化する必要がある。 Score = initScore; } public void OnBeforeSerialize() { /* do nothing */ } } // "GameScene"側 public class ScoreChanger { [SerializeField] private ScoreScriptableObject scoreScriptableObject = default; public void ScorePlusOne() { scoreScriptableObject.Score++; } } // "ResultScene"側 public class ScoreGetter { [SerializeField] private ScoreScriptableObject scoreScriptableObject = default; public void GetScore() { return scoreScriptableObject.Score; } } //スコアを保持するScriptableObjectを一つつくり、それをシーン内のコンポーネントにインスペクターから設定しています。