경량 데이터 저장
ScriptableObject는 메모리를 효율적으로 사용하여 가벼운 데이터 객체를 생성할 수 있음. 주로 자주 사용되는 값이나 데이터 셋을 저장하는 데 적합
데이터 관리
스크립터블 오브젝트는 게임에서 반복적으로 사용되는 데이터(예: 아이템 정보, 캐릭터 능력치 등)를 관리하기 좋음.
이는 메모리와 성능을 효율적으로 사용할 수 있도록 도와줌
데이터 재사용
여러 오브젝트나 스크립트가 같은 스크립터블 오브젝트를 참조할 수 있어서 데이터를 재사용하거나 쉽게 업데이트할 수 있음
직렬화 가능
유니티 에디터 내에서 직접 설정하고 저장할 수 있도록 직렬화가 가능하여 인스펙터에 변수들이 노출됨. 인스펙터(Inspector)에서 에셋처럼 관리될 수 있음
프로젝트 패널에서 별도의 에셋 파일로 생성되어, 수동으로 수정하거나 관리하기가 용이
런타임 데이터 유지
MonoBehaviour와 달리, 씬이 전환되어도 데이터가 유지되므로 각종 설정 값이나 상태를 유지하는 데 유리함
성능 최적화
게임 오브젝트에 붙지 않기 때문에, MonoBehaviour와 달리 각 프레임에서 업데이트되지 않음. 이는 성능을 최적화하는 데 도움이 됩니다.
[CreateAssetMenu] 속성fileName : 새로 생성되는 스크립터블 오브젝트의 기본 파일 이름을 지정함menuName : 에디터에서 새 스크립터블 오브젝트를 생성할 때 표시될 경로를 지정order : 순서를 나타냄
유니티 에디터에서 사용하는 방법유니티 에디터에서 프로젝트 창을 열고, 빈 공간에서 마우스 오른쪽 클릭Create > Game > ItemData 메뉴를 선택새 스크립터블 오브젝트가 생성되며 기본 파일 이름이 NewPlayerStats로 설정됨생성된 ItemData 오브젝트를 클릭하여 인스펙터 창에서 itemName, itemID, itemIcon, description 등의 값을 수정할 수 있음
using UnityEngine;
[CreateAssetMenu(fileName = "NewCharacterData", menuName = "CharacterData")]
public class CharacterData : ScriptableObject
{
public string characterName;
public int health;
public int attackPower;
}