[개발일지] Box Tengo - 리팩토링. 게임 세팅 Scriptable 화
기존방식과 문제점
기존 방식
Monobehavior Script 내 변수에 [SerializeField]를 Attribute를 주어, Inspector에서 조절 가능하게 만들고, GameObject를 생성, 거기에 Script를 Component로 추가한 뒤 조절함
문제점
게임 관련된 상수들이 GameObject에 종속되어, 수정하려면 그 오브젝트가 들어있는 씬으로 들어가, 하이어라키를 뒤져서 Object의 Inspector창을 연 다음 수정할 수 밖에 없었습니다.
또한 게임에서 밸런스가 필요한 두 값이 다른 Object에 들어가 있는 경우 두 Object를 이동하며 수정해야 합니다.
기타 문제점 정리
1.Play Mode 동안 수정한 값들이 Edit모드로 돌아가면 사라짐.(장점일 수도, 단점일 수도 있음)
2.Setting 세트들 ( ex)총 시간 60초일 때는 따라오는 나머지 세팅값들 set, 30초일 때 밸런스 맞는 나머지 세팅값들 set 등)
3.Setting에 접근하려는 모든 코드가 Setting GameObject를 찾아야함. (static으로 해결 가능)
리팩토링 코드
원래 코드에 변수 선언부에
public GameConfig _settings;
GameConfig s;
추가
GameConfig.cs
using UnityEngine;
[CreateAssetMenu(menuName = "BoxTengo/Game Config", fileName = "GameConfig.asset")]
public class GameConfig : ScriptableObject
{
[Header("Time")]
public float totalTime;
public float secondTime;
public float retryTime;
public float subRetryTime;
public float minRetryTime;
[Header("Point")]
public float allClearPoint;
[Header("Combo")]
public float comboTime;
public float baseMaxComboTime;
public float plusComboTime;
public float maxComboTime;
}
저장하고
Project 창에서 Assets/Config 폴더 아래로 들어가 오른쪽 클릭을 해보면
Create > Box Tengo 메뉴가 생긴 것을 확인할 수 있습니다.
그 아래 Game Config를 만들고, Inspector에서 값들을 줍니다.
기존 코드에서 해당 변수들을 선언문을 지우고, s.변수 의 형식으로 재지정해줍니다.
결과물
깔끔.
댓글
댓글 쓰기