개발

[Unity] 객체 초기화 상태 관리

백인성(GGM) 2024. 10. 1. 23:31

 

게임을 만들다 보면 객체를 초기화하는 함수를 작성할 때가 있습니다.

 

하지만 가끔 객체가 초기화가 여러번 호출될 때가 존재합니다.

 

그것을 보안하기위해 요즘에는 아래의 코드를 사용합니다.

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