유니티 버전 - 2022.3.17f1
목차
- OnValidate()
- ValidateCheckItemCode
- 결과
OnValidate()
유니티에서 제공하는 이벤트 함수이고, 인스펙터 창에서 스크립트 컴포넌트의 속성을 변경할 때 호출됩니다
관리하는 ScriptableObjectAssets이 많아질수록(이하 SO), 값을 빼먹거나 관리되지 못하는 SO 내의 데이터가 발생할 수 도 있습니다, 에디터 환경에서 OnValidate()를 이용하여 관리해보도록 하겠습니다
데이터의 일부만 가져왔습니다, 대표격으로 itemCode가 제대로 입력되어있는지 확인하기 위하여 아래와 같이 코드를 작성합니다
public int itemCode;
#if UNITY_EDITOR
private void OnValidate()
{
ValidateHelper.ValidateCheckItemCode(this, nameof(itemCode), itemCode);
ValidateHelper.ValidateCheckItemCode(A, B, C);
}
#endif
A : 현재 스크립트를 의미합니다
B : 변수 이름을 문자열로 반환한 값 입니다
C : 검증 대상이 되는 변수 입니다
ValidateCheckItemCode
itemCode의 데이터 형식이 int이고 기본 값은 0 이기에 만약 SO의 itemCode가 0 이라면 디버그를 출력하도록 해주었습니다
public static class ValidateHelper
{
/// <summary>
/// 아이템 SO의 데이터 무결성 검증
/// </summary>
public static bool ValidateCheckItemCode(Object p_Object, string p_FieldName, int p_codeToCheck)
{
if (p_codeToCheck == 0)
{
Debug.Log($"{p_FieldName} 변수가 비어있고 반드시 작성되어야 합니다. Assets 이름은 {p_Object.name.ToString()}입니다");
return true;
}
return false;
}
결과
temCode가 작성되어있지 않은 경우
아래와 같이 디버그가 출력됩니다
'코드 및 공부 > 데이터 관리' 카테고리의 다른 글
인벤토리 슬롯 저장/로드시 간헐적으로 아이템이 사라지는 현상 (0) | 2024.12.27 |
---|---|
유니티 조합 시스템 - 슬롯 이용 (0) | 2024.12.24 |
OnDrop이 실행되었을때 OnEndDrag가 실행되지 못하도록 하기 (1) | 2024.12.24 |
Application.dataPath와 Application.persistentDataPath (1) | 2024.11.27 |
데이터 관리 - JSON을 이용한 데이터 관리 (0) | 2024.09.16 |