ex)
public UnityEvent<float> OnVolumeChanged; // 이벤트
public AudioSource audioSource;
void Start(){
// UnityEvent에 메서드 연결
OnVolumeChanged.AddListener(ChangedVolume);
}
public void ChangeVolume(float value){
audioSource.volume = value;
}
public void TriggerVolumeChange(float newVolume){
OnVolumeChanged.Invoke(newVolume); // 이벤트 연결
}
유니티에서 제공하는 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너
값의 사본이 생성되는 것 방지 -> 메모리 낭비 v
인스턴스화 할 때마다 데이터 사본 생기니 프리팹 사용에 유용
사용 시 메모리에 scriptable object의 데이터 사본만 저장하고 이를 참조하는 방식으로 작동
스크립트는 ScriptableObject 클래스 상속하여 사용
CreateAssetMenu: 간편하게 클래스를 이용하여 커스텀 에셋 생성 가능
[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/SpawnManagerScriptableObject", order = 1)]
public class SpawnManagerScriptableObject : ScriptableObject
{
public string prefabName;
public int numberOfPrefabsToCreate;
public Vector3[] spawnPoints;
}