ScriptableObject를 플레이모드에서 수정할 경우 플레이모드에서 종료해도 값이 유지된다. 이를 원치 않다면 Instantiate로 생성해서 사용해야한다.
// 이런 방법도 있지 않을까
public class SomeObject : ScriptableObject
{
private SomeObject instance;
private SomeObject Instance
{
get
{
if(instance == null)
{
instance = Instantiate(this);
}
return instance;
}
}
private int someField;
public int SomeField
{
get => Instance.someField;
}
}
경량 패턴 ScriptableObject에 공유 데이터를 넣어놓고 프리팹은 ScriptableObject를 참조하면 메모리를 절약할 수 있다.
DontDestoryOnLoad 대체 에셋으로 존재하는 ScriptableObject를 직접 참조하는 경우 씬이 변경되어도 그 값이 유지된다.