반응형
ScriptableObject란?
유니티에서 제공하는 기능으로, 하나의 데이터 폼을 만들 때 사용합니다. 주로 특정 스테이터스, 레벨 디자인 등에서 사용되고 있습니다.
예제
아래와 같이 하나의 폼을 작성합니다.
using UnityEngine;
[CreateAssetMenu(fileName = "CharacterBaseStatsData", menuName = "ScriptableObjects/CharacterBaseStatsData", order = 1)]
public class CharacterBaseStatsData : ScriptableObject
{
public int Hp;
public int Defence;
public int Damage;
public int AttackSpeed;
public int MoveSpeed;
}
[CreateAssetMenu(fileName = "CharacterBaseStatsData", menuName = "ScriptableObjects/CharacterBaseStatsData", order = 1)] 어트리뷰트를 통해, ScriptableObject 파일 생성 시 만들어지는 기본 이름과 메뉴 네이밍을 확인할 수 있습니다. (order는 메뉴 우선 순위)
캐릭터 기본 베이스 스텟이라는 데이터 구조를 작성했습니다. 구성은 체력, 방어력, 공격력, 공격속도, 이동속도로 구성하였습니다.
위와 같이 ScriptableObject를 생성합니다. 그리고 아래와 같이 각각 직업별로 기본 스텟값을 설정합니다.
using UnityEngine;
public abstract class CharacterInfo :MonoBehaviour
{
#region Inspector
public CharacterBaseStatusData baseStausData;
#endregion
}
CharacterInfo 클래스를 상속받은 각 캐릭터 스테이터스에 연결해줍니다.
사용하기 좋은 방법
데이터 구조를 한 덩어리를 만들어서 관리를 하는데 용이합니다. 이 외에도 레벨 디자인에서도 주로 사용이 되며, 실제 게임 작업 중에서는 데이터 하나로 여러가지 표현 방식이 필요한 경우에도 사용합니다.
참고 : 유니티 ScriptableObject https://docs.unity3d.com/kr/2021.1/Manual/class-ScriptableObject.html
반응형
'Study' 카테고리의 다른 글
C#, 매개 변수 한정자 out과 ref 기능 및 class 사용 이유 (0) | 2022.02.09 |
---|---|
C#, 쓰레드 동기화를 위한 뮤텍스와 셰마포어 예제 (0) | 2022.02.02 |
디자인 패턴, Singleton Pattern (단일 인스턴스 패턴) (0) | 2022.01.31 |
디자인 패턴, Flyweight Pattern (경량 패턴) (0) | 2022.01.30 |
디자인 패턴, Observer Pattern (관찰자 패턴) (0) | 2022.01.29 |
댓글