! 아직 추가 작업 중
ScriptableObject 정의
클래스의 인스턴스와는 별개로 대량의 데이터를 저장하는데 사용할 수 있는 데이터 컨테이너
프로젝트를 빌드하기 전에만 수정 및 정의가 가능하지만 빌드된 후에는 수정할 수 없다.
사용 방법
🔷 ScriptableObject를 만들기 위해선 ScriptabelObject 클래스를 상속받아서 아래와 같이 구현하면 된다.
[CreateAssetMenu(fileName = "Assets/Resources/Player/PlayerData", menuName = "Person/Person", order = 0)]
public class PersonInforSO : ScriptableObject
{
public Sprite sprite;
public GameObject AniPrefab;
public float speed = 0f;
}
CreateAssetMenu의 경우 특정 스크립트에서 새로운 에셋을 생성할 수 있는 메뉴 옵션을 제공해주는 기능이다.
🔸 fileName : 생성되는 에셋의 이름 결정
🔸 menuName : 에셋을 생성하는 메뉴의 이름, '/'를 추가하면 경로가 추가
🔸 order : 메뉴 중 몇 번째로 위치할지 표기하는 것으로 값이 클 수록 마지막에 표기
🔷 작성한 ScriptableObject를 확인하기 위해선 Create 상단에 나타난 것을 확인할 수 있다.
🔷Create > 작성한 ScriptableObject 선택
아래와 같이 생성이 되며 정보에 대한 프로퍼티들이 보이는 것을 확인할 수 있다.
장점
🔸 값의 사본이 생성되는 것을 방지하여 메모리 사용량을 줄일 수 있다.
🔸 prefab을 일반 변수로 사용할 경우 변수의 byte * 객체 수 만큼 메모리가 소모되지만 ScriptableObject을 이용할 경우 변수의 byte만큼만 소모하여 이득을 챙길 수 있다.
단점
🔸 MonoBehaviour와 달리 게임 오브젝트의 컴포넌트에 부착할 수 없다.
마지막
ScriptableObject의 경우 외부 데이터에서 파싱하는 경우가 아닌 에디터에서 편하게 관리가 편한 데이터일 경우에만 사용하는게 좋다는 것을 알게되었다. 뭔가 활용성이 좋은 방향이 있을 것같은데 어떤 부분에서 좋은 지 좀 더 알아보고 적용하는게 좋을 것 같다.
참고사이트
'Unity' 카테고리의 다른 글
[Unity] Solve - Shader가 핸드폰에선 적용이 안될 때 (0) | 2024.08.18 |
---|---|
[ 내일배움캠프 ] TIL.20 - 애니메이션 블렌드 ( 4방향 애니메이션 ) (0) | 2024.05.13 |
[ Unity ] 벡터(Vector) (0) | 2024.04.27 |
[ Unity ] RigidBody를 이용한 Player 이동 구현 (0) | 2024.04.21 |
[ Unity ] Unity Ads 광고 추가하기 (0) | 2024.03.27 |