반응형
스크립터블 오브젝트란?
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);
}
}
참고할만한 글
반응형