본문 바로가기

ScriptableObject3

ScriptableObject를 사용하며 겪었던 문제 프로젝트가 빌드에서도 제대로 동작하는지 확인하는 과정에서 발견하게 되었다.문제 상황게임 오버(Game Over) 이후에 재시작 버튼을 눌렀을 때, 플레이어의 스탯이 초기 화 되게 하는 기능에서 문제가 발생하였다. 플레이어의 기본 스탯은 고정해 놓았고, 해당 스탯을 SO를 통해서 관리하도록 하였다. 그래서 게임이 시작되기에 앞서서 SO를 불러와서 플레이어의 스탯을 설정해 주었다.예 ㅣ체력, 데미지, 이동속도 등이후, 게임 오버에서 재시작을 할 경우 플레이어 체력이 계속해서 0이하의 값으로 초기화 되는 문제가 발생하였다.의문점처음 SO를 공부할 때는 SO는 에디터 환경이 아닌, 빌드 된 후에는 그 값이 고정되어서 수정되지 않는다. 이렇게 알고 있었다. 그런데 재시작할 때도 분명히 스탯 SO를 통해서 다시 플.. 2025. 4. 24.
ScriptableObject 배열 길이 제한하기 ScriptableObject를 이용해서 다양한 정보를 관리하기 위해서 배열을 사용하는 경우가 있다.using UnityEngine;[CreateAssetMenu(fileName = "Data", menuName = "Crate New Data_SO")]public class Data : ScriptableObject{ public int[] values = new int[4];}//values 배열의 길이보다 값이 더 들어가는 것을 확인할 수 있다.이 때마다, ScriptableObject의 스크립트에서 배열의 길이를 정해주더라도 에디터의 인스펙터에서는 제한한 길이보다 값을 더 저장할 수 있다.배열 크기 제한하는 방법using UnityEngine;using System;[CreateAssetMenu(.. 2025. 3. 18.
ScriptableObject 클래스의 인스턴스 자신에서 정보를 초기화하는 것과 다르게, 여러 객체의 인스턴스에서 사용 가능한, 개발자가 정의한 형식의 데이터를 담는 컨테이너이다.장점 값의 불필요한 복사를 하나의 ScriptableObject에 대한 참조로, 메모리 효율을 높인다. 에디터에서 생성하고, 값을 수정할 수 있다.ScriptableObject의 사용 ScriptableObject를 상속 받는다. [CreateAssetMenu]를 통해서 파일의 이름과 메뉴 구조를 지정한다. 지정된 메뉴 구조를 통해서 새로운ScriptableObject를 생성한다.using UnityEngine;[CreateAssetMenu(fileName = "Example", menuName = "Create New ScriptableObject/Crea.. 2024. 9. 30.