본문 바로가기
🌐 유니티 (Unity)

Day 34 - ScriptableObject & (프리팹 또는 GUID)

by shin0707 2024. 5. 29.
728x90
반응형

  • 주제

>> ScriptableObject

>> 프리팹

>> GUID


  • 공부내용

1. 개념

ScriptableObject : 게임의 설정, 데이터 테이블, 게임 오브젝트의 프로토타입을 저장하는 데 유용하다.

에디터에서 직접 데이터를 편집할 수 있어서 편하다.

 

프리팹: 재사용 가능한 게임 오브젝트의 템플릿으로, 한 번 정의하면 여러 곳에서 사용 가능하다.

 

GUID: 전 세계에서 고유한 식별자를 생성하는 방법이다.

한 마디로 하나 뿐인 고유 ID를 생성하여 게임 오브젝트에 부여할 수 있다.


2. 프리팹을 사용하여 게임 오브젝트를 생성하는 예제 

2-1. ScriptableObject 클래스 작성

using UnityEngine;

[CreateAssetMenu(fileName = "NewObjectData", menuName = "ScriptableObjects/ObjectData", order = 1)]
public class ObjectData : ScriptableObject
{
    public string objectName; // 오브젝트 이름
    public GameObject prefab; // 프리팹
}

 

2-2. GameManager 클래스 작성

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public ObjectData objectData; // 오브젝트 데이터
    
    void Start()
    {
        if (objectData != null && objectData.prefab != null)
        {
            Instantiate(objectData.prefab, Vector3.zero, Quaternion.identity); // 프리팹 인스턴스화
        }
    }
}

 


3. 새로운 ID로 게임 오브젝트를 생성하는 예제

3-1. ScriptableObject 클래스 작성

using UnityEngine;

[CreateAssetMenu(fileName = "NewObjectData", menuName = "ScriptableObjects/ObjectData", order = 1)]
public class ObjectData : ScriptableObject
{
    public string objectName; // 오브젝트 이름
    public string uniqueID; // 고유 ID
}

 

3-2. GameManager 클래스 작성

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public ObjectData objectData; // 오브젝트 데이터

    void Start()
    {
        if (objectData != null)
        {
            GameObject newObject = new GameObject(objectData.objectName); // 새로운 게임 오브젝트 생성
            newObject.AddComponent<MyComponent>().uniqueID = GenerateUniqueID(); // 새로운 컴포넌트 추가 및 고유 ID 설정
        }
    }

    string GenerateUniqueID()
    {
        return System.Guid.NewGuid().ToString(); // 고유 ID 생성
    }
}

public class MyComponent : MonoBehaviour
{
    public string uniqueID; // 고유 ID
}

 

 

728x90
반응형

loading