Scriptable.cs는 여러 변수가 있다. 지금은 4개지만, 앞으로 점점 늘어날 것이고 데이터를 일일이 입력해줘야 한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Scriptable : MonoBehaviour
{
public int a;
public float b;
public string c;
public Vector3 d;
}
이럴 경우 ScriptableObject를 사용하여 Data를 분리할 수 있다.
먼저 분리할 Data의 이름을 MyData라고 하고 Scriptable.cs에 추가해두자.
a ~ d 변수를 모두 mydata가 대신하게 된다.
public class Scriptable : MonoBehaviour
{
MyData mydata;
//public int a;
//public float b;
//public string c;
//public Vector3 d;
}
스크립터블 오브젝트는 MonoBehaviour 대신 ScriptableObject를 상속한다.
그리고 MyData를 기반으로 mydata1, mydata2, mydata3 등을 만들어서 저장해야 한다.
CreateAssetMenu 속성으로 오브젝트를 생성하도록 추가한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName="MyScriptable", fileName="MyData")]
public class MyData : ScriptableObject
{
public int a = 100;
public float b;
public string c = "Name";
public Vector3 d;
}
그러면 Create 메뉴에 menuName="MyScriptable" 가 보인다.
Assets에도 확인할 수 있다.
클릭하면 아래와 같이 Scriptable Object가 생성된다.
그리고 데이터를 Inspector에서 수정가능하다.
데이터를 xml, json 등으로 분리할 수도 있지만 매번 알맞은 에디터 창을 켜서 수정하기 때문에 불편하다.
이런 경우는 스크립터블 오브젝트가 유리할 수 있다.
MyData에 원하는 값을 수정한 후, Scriptable의 Mydata에 연결하면 된다.
Scriptable.cs 내부에서는 아래와 같이 접근할 수 있다.
이제 여러 개의 오브젝트에서 a, b, c, d를 모두 다르게 사용한다면 MyData를 여러 개 만들어서 관리하면 된다.
또는 하나의 스크립트에서 MyData[]로 여러 개의 데이터를 관리할 수도 있다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
'개발 > Unity' 카테고리의 다른 글
유니티 C# - 문자열 합치기 (0) | 2022.08.01 |
---|---|
유니티 - Action으로 이벤트 등록하기 (Register Method with Action) (1) | 2022.07.29 |
유니티 UI - 코루틴 메시지 큐로 순서대로 함수 실행하기 (Execute Coroutines Run in Order using Message (0) | 2022.07.28 |
유니티 - UI가 있는 경우 Raycast 제한하기 (Detecting when a touch is over UI element) (0) | 2022.07.28 |
유니티 - Missing Component 찾기 (0) | 2022.07.28 |
댓글