2D 게임을 만들면서 다른것보다 은근 중요한 것이
열거형과 SO 라는 느낌을 받았다.
정말 많은 곳에 사용되고, 어떻게 사용하느냐에 따라 코드 짤 때 난이도가 달라지는 부분인듯 하다.
Enum (열거형)
상수형 값에 의미를 부여하기 위해 사용
기본 타임은 int 기반, 제일 앞의 값을 0으로 하고 이후에 1,2,3... 과 같이 번호를 붙임
중간에 번호체계를 변경할 수 있음
중간에 데이터가 추가될 염려가 있는 경우에 이렇게 활용 (번호가 흐트러지면 데이터들이 다 망가질 수 있음)
그때는 Weapon=100 과 같이 값을 직접 넣어주게 된다
이후에 101, 102와 같이 그 다음 숫자가 배정됨
if (ItemType == 0) 일 때보다 if (ItemType == ItemType.Weapon) 일때 훨신 이해가 잘됨
public enum ItemType
{
Weapon, // weapon 값은 0
Armor, // Armor 값은 1 (이전 값에서 자동으로 1 증가)
Consumable, // Consumable 값은 2
QuestItem // QuestItem 값은 3
}
public enum ItemType
{
Weapon = 100, // weapon 값은 100
Armor, // Armor 값은 101 (이전 값에서 1 증가)
Consumable, // Consumable 값은 102
QuestItem // QuestItem 값은 103
}
이런식으로 열거형을 사용하면 좀더 깔끔하고 쉽게 코드나 기능을 정리할 수 있다!
스크립터블 오브젝트 (Scriptable Object)
유니티에서 데이터를 저장하고 관리하는 유연한 데이터 컨테이너
게임에서 재사용 가능한 데이터 또는 설정을 저장하는데 사용
코드와 데이터를 분리하여 코드를 더 깔끔하고 관리하기 쉽게 만듬
하나의 스크립터블오브젝트를 여러 게임 오브젝트에서 참조하거나 재사용 가능
유니티 에디터와 통합되어 인스펙터 창에서 직접 수정하고 관리할 수 있음
프로젝트의 세팅값을 정리해놓고 읽어서 바로바로 처리할 수 있게 하는 것
같은 몬스터 100마리 있을 때, 스크립터블에 몬스터 기본정보를 저장해놓으면
몬스터 100개 안만들고 그냥 스크립터블에서 가져오기를 하면 되서 메모리도 아낄 수 있다
무슨무슨 SO~ 이렇게 된 것들!!
Attack SO 만들기
using UnityEngine;
[CreateAssetMenu(fileName = "DefaultAttackSO", menuName = "TopDownController/Attacks/Default", order = 0)]
public class AttackSO : ScriptableObject
{
// 공격에 대한 기준 데이터를 유니티 에디터 상에서 편하게 관리할 수 있어요.
// SO로 들고 있으면 모두가 이 SO를 바라보게 되어 중복된 데이터가 여기저기 흘러다니지 않는 장점이 있어요!
[Header("Attack Info")]
public float size;
public float delay;
public float power;
public float speed;
public LayerMask target;
[Header("Knock Back Info")]
public bool isOnKnockback;
public float knockbackPower;
public float knockbackTime;
}
Attack SO 는 ScriptableObject 의 상속을 받는다
파일명, 메뉴네임, 오더 정하고
이런 데이터를 들고있다~ 하는 작업이 필요,
이런 느낌으로
SO에는 기본값들?이나 설정들을 넣어줘서 사용하는 것 같다.
약간 매번 공격 할 때 마다 공격에 관련된 모든 코드를 불러오는 것 보다
이 공격에는 이런거, 저런걸 포함한다!! 란 스크립트를 써주고 그 스크립트 자체를 불러와서
사용하면 편리한 것 같음.
말 그대로 정보 컨테이너!
앞으로 게임 만들 때 열거형과 SO가 상당히 중요할 것 같다!!
그래도 아직.. 많이 어렵다
'제출용 > TIL' 카테고리의 다른 글
내일배움캠프 29일차 TIL + 프로젝트 세팅, 스카이박스 (0) | 2024.05.27 |
---|---|
내일배움캠프 28일차 TIL + 비트연산자, 레이어마스크 (0) | 2024.05.24 |
내일배움캠프 26일차 TIL + 마우스 따라 회전하는 무기 만들기, 프리팹 (0) | 2024.05.22 |
내일배움캠프 25일차 TIL + 쿼터니언, 삼각함수 (0) | 2024.05.21 |
내일배움캠프 24일차 TIL + 화면 밖에서 랜덤 좌표 생성하기 (0) | 2024.05.20 |