Для изменения информации в отдельном Scriptable Object можно использовать следующие методы:
1. Создать методы в самом Scriptable Object для изменения его значений. Например, для изменения переменной `health` в Scriptable Object можно создать метод `SetHealth(int newHealth)`, который будет принимать новое значение `newHealth` и присваивать его переменной `health`.
2. Воспользоваться сериализованными полями в Scriptable Object. Для этого нужно объявить переменные как `public`, `private` или `protected и использовать атрибут `[SerializeField]`. Это позволит изменять значения полей из редактора Unity.
Чтобы избежать проблемы изменения данных для всех классов при работе с переменными из Scriptable Object, рекомендуется создать копию значения перед использованием. Например, если у вас есть переменная `health` в Scriptable Object, то перед изменением её значения можно создать переменную `int currentHealth = health` и работать с ней.
Чтобы получить ожидаемые значения из экземпляров Scriptable Object, не затрагивая другие переменные, можно работать с экземпляром напрямую, не изменяя сам Scriptable Object. Например, если у вас есть экземпляр `myScriptableObject`, можно обращаться к его полям напрямую, не меняя их в самом Scriptable Object.