게임을 만들다 보면 객체를 초기화하는 함수를 작성할 때가 있습니다.
하지만 가끔 객체가 초기화가 여러번 호출될 때가 존재합니다.
그것을 보안하기위해 요즘에는 아래의 코드를 사용합니다.
using UnityEngine;
public class InitBase : MonoBehaviour
{
private bool _init = false; //초기화 확인
public virtual bool Init() //초기화 함수
{
if (_init) //초기화가 됬다면
return false; //false 반환
_init = true; // 초기화 완료
return true; // true 반환
}
private void Awake()
{
Init(); // 인스턴스가 로드될 때 실행
}
}
이 코드는 생명 주기 함수인 Awake에서 딱 한번 호출되는 코드로
사용 방법은 아래와 같다.
public override bool Init()
{
if (base.Init() == false) // 이미 실행 되었었는지 확인
return false;
Collider = gameObject.GetComponent<CircleCollider2D>();
Sprite = gameObject.GetComponent<SpriteRenderer>();
return true; //true 반환
}
MonoBehaviour를 상속 받는 객체에
MonoBehaviour대신 InitBase를 적는다.
이후 Init을 Override한 뒤 그 안에 if문으로 이미 1번 이상 실행 되었는지 체크 후
그 아래 초기화할 내용을 넣어주면 된다.
'개발' 카테고리의 다른 글
[키우기 게임 1일차] 키우기 게임 만들기 시작 (3) | 2024.10.11 |
---|---|
[Unity] 스마트한 GetCompoenet 만들기 (0) | 2024.10.04 |
C++ 큐 (0) | 2024.04.23 |
C++ 템플릿 (0) | 2024.04.19 |
시간 복잡도 (0) | 2024.04.16 |