유니티 C# Scriptable Object 스크립터블 오브젝트 간단 사용법

반응형

스크립터블 오브젝트란?

ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너로

프로젝트의 메모리 사용을 줄일 때 사용합니다. 

 

 

  • 코드 작성 (예시 : 데이터베이스 만들기)
using UnityEngine;

[CreateAssetMenu(fileName = "PlayerDataBase", menuName = "DataBase/PlayerDataBase")]

public class PlayerDataBase : ScriptableObject
{
    [SerializeField]
    private int money = 0;

    public int Money
    {
        get
        {
            return money;
        }
        set
        {
            money = value;
        }
    }

    [SerializeField]
    private bool check = false;

    public bool Check
    {
        get
        {
            return check;
        }
        set
        {
            check = value;
        }
    }
}

 

작성 후 Project창에 원하는 위치에서 우클릭 / Create / DataBase / PlayerDataBase 생성

 


  • 활용하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UseDataBase : MonoBehaviour
{
    public PlayerDataBase playerDataBase;

    void Awake()
    {
        // Assets/Resources 폴더에 생성했을 경우
        //if (playerDataBase == null) playerDataBase = Resources.Load("PlayerDataBase") as PlayerDataBase;
    }

    public void AddNumber()
    {
        if (playerDataBase == null) return;

        playerDataBase.Money += 1;

        Debug.Log(playerDataBase.Money);
    }

    public void SubtractNumber()
    {
        if (playerDataBase == null) return;

        playerDataBase.Money -= 1;

        Debug.Log(playerDataBase.Money);
    }

    public void TrueBool()
    {
        if (playerDataBase == null) return;

        playerDataBase.Check = true;

        Debug.Log(playerDataBase.Check);
    }

    public void FalseBool()
    {
        if (playerDataBase == null) return;

        playerDataBase.Check = false;

        Debug.Log(playerDataBase.Check);
    }
}

 


참고할만한 글

 

 

유니티 C# 일정거리 범위 안에 목표물 체크 Vector3.Distance

코드 작성 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { public Transform target; float dist; void Update() { dist = Vector3.Distance(target.transform.position

parksh3641.tistory.com

 

 

유니티 C# 카메라 목표지점까지 부드럽게 이동 Camera Vector3.SmoothDamp

코드 작성 using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveCamera : MonoBehaviour { public Transform targetPosition; public float smoothTime = 0.3f; private Vector3 velocity = Vector3.zero; public bool isA

parksh3641.tistory.com

 

 

ScriptableObject - Unity 매뉴얼

ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject의 주요 사용 사례 중 하나는 값의 사본이 생성되는 것을 방지하

docs.unity3d.com

 

반응형