ScriptableObject
스크립팅 가능한 오브젝트
메소드를 실행하는 스크립트가아닌 데이터를 사용하기 위한 스크립트이다.
생성방법
[CreateAssetMenu(fileName = "New HeroData", menuName = "Sword HeroData", order = 2)]
public class test : ScriptableObject
{
}
유니티에서 스크립트를 생성하면 Monobehaviour를 자동으로 상속 받게 되는데 지우고
ScriptableObject를 상속받아온다.
[CreateAssetMenu] : 없어도 되지만 있으면 편함
fileName : 새로 제작하게되면 임시로 생성된다.
menuName : 유니티 메뉴에 표기되는 이름
order : 메뉴에서 보일 순서
Assets -> Create 보면 방금 생성한 HeroData가 보이게 된다.
SerializeField의 원본 데이터들은 수정되면 안되기 때문에
데이터 값을 받을 게터를 public으로 추가해준다.
public class test : ScriptableObject
{
[SerializeField]
string heroName;
[SerializeField]
string description;
[SerializeField]
int goldCost;
public string sName => heroName;
public string sDesc => description;
public int nCoin => goldCost;
}
사용법
데이터 값 입력
ScriptableObject를 받을 코드 작성
public class Scene : MonoBehaviour
{
public Text m_txtUI;
public test m_Data;
void Start()
{
m_txtUI.text = string.Format(m_Data.sName + " // " + m_Data.sDesc);
}
}
Data 매칭 인스펙터 창에서 끌어다 놓는다
실행
데이터를 한 오브젝트나 클래스에서 사용하기에는 괜찮은 것 같다. 데이터가 왔다갔다 하거나 값이 변하는 데이터는 쓰기에 어려울 것 같다.
학습 참고 : https://docs.unity3d.com/kr/current/Manual/class-ScriptableObject.html
https://m.blog.naver.com/yoohee2018/220725032540
'유니티 > 레퍼런스' 카테고리의 다른 글
유니티) 라이트효과 PostProcessing (0) | 2019.03.02 |
---|---|
유니티,C#) 코루틴Coroutine 작동원리 (0) | 2019.02.23 |
유니티) 코루틴 Coroutine (0) | 2018.12.27 |
유니티)플레이어프렙스 PlayerPrefs 데이터 저장하기 (0) | 2018.12.21 |
유니티) ScreenPointToRay 카메라로 부터의 스크린의 점 (1) | 2018.12.19 |