CocosCreator

코코스 크리에이터의 생명주기

뽀또치즈맛 2025. 6. 1. 00:14


코코스 크리에이터(Cocos Creator) 타입스크립트 컴포넌트의 생명주기는 게임 오브젝트(노드)가 생성, 활성화, 업데이트, 비활성화, 삭제되는 동안 자동으로 호출되는 콜백 함수들로 구성되어 있습니다.


생명주기 콜백(Life Cycle Callbacks)
Cocos Creator는 컴포넌트 스크립트를 위한 생명주기 콜백 함수를 제공합니다. 사용자가 특정 콜백 함수를 정의하기만 하면, Cocos Creator가 해당 시점에 자동으로 실행해주며, 사용자가 직접 호출할 필요는 없습니다.

현재 제공되는 주요 생명주기 콜백 함수(호출 순서대로)는 다음과 같습니다:

onLoad()

onEnable()

start()

update()

lateUpdate()

onDisable()

onDestroy()

onLoad()
컴포넌트 스크립트의 초기화 단계에서 사용되는 콜백입니다.
onLoad()는 노드가 처음 활성화될 때(예: 씬이 로드되거나 노드가 활성화될 때) 호출됩니다.

이 단계에서는 씬 내의 다른 노드나 노드와 연관된 리소스 데이터에 접근할 수 있습니다.
onLoad()는 항상 start()보다 먼저 실행되며, 스크립트의 초기화 순서를 지정할 때 사용할 수 있습니다.
일반적으로 변수 초기화, 리소스 로드, 이벤트 등록 등 초기화 관련 작업을 이 단계에서 수행합니다.

import { _decorator, Component, Node, SpriteFrame, find } from 'cc';
const { ccclass, property } = _decorator;

@ccclass("test")
export class test extends Component {
    @property({type:SpriteFrame})
    bulletSprite = null;

    @property({type:Node})
    gun = null;

    _bulletRect = null;

    onLoad() {
        this._bulletRect = this.bulletSprite.getRect();
        this.gun = find('hand/weapon', this.node);
    }
}


생성자 처럼 쓰면 될듯


onEnable()
시점 : 컴포넌트의 enabled 속성이 false에서 true로 바뀌거나, 노드의 active 속성이 false에서 true로 바뀔 때 호출됩니다.

노드가 처음 생성되고 enabled가 true라면, onLoad() 이후, start() 이전에 호출됩니다.

이벤트 바인딩할 때 쓰면 될듯
ResetSetting()이런 식 함수 호출 장소로 쓰기


start()
시점 : 컴포넌트가 처음 활성화되기 직전에, 즉 첫 번째 update()가 실행되기 전에 호출됩니다.

주로 중간 상태 데이터의 초기화에 사용하며, 이 데이터는 이후 업데이트 과정에서 자주 변경될 수 있습니다.

변수 초기화 로직으로 쓰면 될듯
Initialize 함수 호출에 쓰기


import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass("starttest")
export class starttest extends Component {
    private _timer: number = 0.0;

    start () {
        this._timer = 1.0;
    }

    update (deltaTime: number) {
        this._timer += deltaTime;
        if(this._timer >= 10.0){
            console.log('I am done!');
            this.enabled = false;
        }
    }
}



update

시점: 매 프레임마다 호출됩니다.

용도: 게임 로직(예: 이동, 충돌, 애니메이션 등)을 처리하는 데 사용합니다.

파라미터: deltaTime(이전 프레임과 현재 프레임 사이의 시간 간격)이 전달됩니다.

lateUpdate

시점: 모든 컴포넌트의 update가 끝난 후 매 프레임마다 호출됩니다.

용도: 카메라 후처리, 특정 오브젝트의 위치 보정 등 update 이후에 처리해야 할 작업에 사용합니다.

onDisable

시점: 컴포넌트가 비활성화(enabled=false)될 때 호출됩니다.

용도: 이벤트 해제, 상태 저장, 자원 임시 해제 등 비활성화 시점에 필요한 작업에 사용합니다.

onDestroy

시점: 컴포넌트가 삭제될 때 호출됩니다.

용도: 메모리 해제, 리소스 정리, 이벤트 완전 해제 등 마지막 정리 작업에 사용합니다.

호출 순서 요약
onLoad (초기화)

onEnable (활성화 시점마다)

start (첫 프레임 전)

update (매 프레임)

lateUpdate (모든 update 이후)

onDisable (비활성화 시점마다)

onDestroy (삭제 시점)