오늘은 스파르타 코딩 클럽 unity 게임 개발 과정 30일차(ScriptableObject 메뉴 만들기 신박한 [Range] )

2023. 12. 8. 20:58스파르타코딩클럽 게임개발

반응형

 

Range를 사용할 수 있는지도 몰랐다.
이런식으로 조절이 가능하다.
난 이게 뭔지 모르는데 상속을 받는 단다. 그래서 찾아보았다.

ScriptableObject

ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject의 주요 사용 사례 중 하나는 값의 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용을 줄이는 것입니다. 이는 연결된 MonoBehaviour 스크립트에 변경되지 않는 데이터를 저장하는 프리팹이 있는 프로젝트의 경우 유용합니다.

이러한 프리팹을 인스턴스화할 때마다 해당 데이터의 자체 사본이 생성됩니다. 이러한 방법을 사용하여 중복 데이터를 저장하는 대신 ScriptableObject를 이용하여 데이터를 저장한 후 모든 프리팹의 레퍼런스를 통해 액세스할 수 있습니다. 즉, 메모리에 데이터 사본을 하나만 저장합니다.

MonoBehaviour와 마찬가지로 ScriptableObject는 기본 Unity 오브젝트에서 파생되나, MonoBehaviour와는 달리 게임 오브젝트에 ScriptableObject를 연결할 수 없으며 대신 프로젝트의 에셋으로 저장해야 합니다.

에디터 사용 시, ScriptableObject에 데이터를 저장하는 작업은 편집할 때나 런타임에 가능합니다. 이는 ScriptableObject가 에디터 네임스페이스와 에디터 스크립팅을 사용하기 때문입니다. 배포된 빌드에서는 ScriptableObject를 사용하여 데이터를 저장할 수 없으나, 개발 시 설정한 ScriptableObject 에셋의 저장된 데이터를 사용할 수 있습니다.

에디터 툴에서 에셋 형태로 ScriptableObject에 저장한 데이터는 디스크에 작성되므로 세션 간에도 그대로 유지됩니다.

ScriptableObject 사용하기

ScriptableObject의 주요 사용 사례는 다음과 같습니다.

  • 에디터 세션 동안 데이터 저장 및 보관
  • 데이터를 프로젝트의 에셋으로 저장하여 런타임 시 사용

ScriptableObject를 사용하려면 애플리케이션의 Assets 폴더에 스크립트를 생성하고 ScriptableObject 클래스에서 상속하도록 해야 합니다. CreateAssetMenu 속성을 사용하면 더욱 간편하게 클래스를 이용하여 커스텀 에셋을 생성할 수 있습니다. 다음 예를 참조하십시오.

using UnityEngine;

[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/SpawnManagerScriptableObject", order = 1)]
public class SpawnManagerScriptableObject : ScriptableObject
{
    public string prefabName;

    public int numberOfPrefabsToCreate;
    public Vector3[] spawnPoints;
}

 

CreateAssetMenu 메뉴를 사용하면 메뉴를 직접 만들수 있다.

오호라.

 

order 은 순서다.

 

이렇게 나온다.

 

 

찬찬히 살펴보니 ScriptableObject 이놈은 지 혼자서 못쓴단다 절렇게 메뉴로 만들어야지 사용할 수 있다고

흠흠.. 그렇군.. 그래서 신기한 기능으로 신기한 것을 만들어 보았다.

 

그렇담 ?? MonoBehaviour에서는 안되나? 

바로 실행
안뜬다. 그렇군
오 이제 잘 뜬다. 사용법을 터득했다고 볼 수있지 핳하하

 

 

반응형