새소식

💻 Programming (프로그래밍)/Unity | C#

[Unity] 스크립터블 오브젝트(Scriptable Object)로 데이터 저장, 읽기를 손쉽게!

  • -

이번 신규 게임 프로젝트를 진행하던 중, 맵 레벨 디자인을 하게되었는데요! 이때 데이터를 저장하는 방법을 고민하다가

데이터를 손쉽게 처리하기위한 스크립터블 오브젝트를 사용하게 되었습니다.

 

 

우선 모르는 분들을 위해 간단하게 설명하자면

 

스크립터블 오브젝트란? 

말그대로 오브젝트 입니다. 하지만 스크립트를 통해 손쉽게 우리가 사용할 수 있는 에셋 즉 오브젝트로 만들어 주는 것이죠!

 

 

만드는 방법 2가지를 소개해드리겠습니다.

첫번째 방법

using UnityEngine;

[CreateAssetMenu(fileName = "NewScriptableObject", menuName = "ScriptableObjects/New ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    public int intValue;
    public string stringValue;
    public float floatValue;
}

 

이런 느낌으로 스크립트를 짜서 저장을 해보면

그러면 이렇게 Assets- Create - ScriptableObjects - New ScriptableObject 칸이 생긴걸 보실 수 있는데요 이 기능을 클릭하게 된다면??

 

Assets 폴더 아래

이렇게 오브젝트가 하나 생성된 것을 볼 수 있습니다

 

요걸 요래요래 조정한 후 게임 오브젝트로 사용하시면 되는데요. 이름도 쉽게 고치면서 하시면 데이터 관리가 용이해지겠죠?

 

 

두번째 방법

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif


public class MyManager : MonoBehaviour
{

#if UNITY_EDITOR 
    public void WirteMyData()
    {
        MyScriptableObject myObject = new MyScriptableObject();
        myObject.intValue = 0;
        myObject.stringValue = "오브젝트";
        myObject.floatValue = 0.5f;

        AssetDatabase.CreateAsset(myObject, "Assets/Resources/");
    }
#endif
}

 

사용하실 스크립트에 기능을 하나 만들어서 그 기능을 사용하시면 돼요!!

 

이렇게 AssetDatabase.CreateAsset(objectName, 저장경로 ) 이걸로 사용하시면 저장경로에 이름으로 오브젝트가 변수들이 할당되어 생성 된답니다.!! 유용하게 써먹을 수 있겠군요!! 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.