2025유니티수업

코드 온오프와 상관 없이 자동 실행되는 애들

버스창문 2025. 7. 22. 17:38
public class _KYS_BossWallCtrl : MonoBehaviour
{
    private readonly string player = "Player";

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.CompareTag(player))
        {
            /*var tar = collision.gameObject.GetComponent<_KYS_BossCtrl>();
            tar.GetHit(damage);*/
            Debug.Log($"{collision.collider.name} 사망");
        }
    }
}

코드 내부에 CollisionEnter만 있다

 

Editor쪽에서 아예 끌수도 없게 바뀐다

만약 뭔가 다른걸 넣어서

private void OnEnable()
{
    StartCoroutine(_KYS_UtilScript.WaitForSeconds(() =>
    {
        this.enabled = false;
    }, 0.1f));
}

이런걸 넣어서 끌수있는 형태로 만들더라도

꺼도 그대로 실행된다

 

 

Awake도 저렇다

 

 

https://reonji.tistory.com/16

<문제상황>

나는 처음에는 스크립트 자체를 비활성화시키면,

당연히 그 스크립트 내에 있는 OnCollisionEnter도 비활성화가 될 줄 알았다.

그러나 스크립트 자체를 비활성화시켰음에도, 그 스크립트의 OnCollisionEnter함수가 작동하는 것이 아닌가.

 

그래서 이 내용에 대해 구글링한 결과, 그 이유를 알게 되었다.

 

Unity의 스크립트를 비활성화시키면 그 스크립트의 모든 함수가 비활성화되는 것이 아니다.

아래 함수들만 비활성화된다.

Start()
Update()
FixedUpdate()
LateUpdate()
OnGUI()
OnDisable()
OnEnable()

 

이 외의 모든 함수들은 스크립트가 비활성화되어도 작동을 한다.

그래서, 스크립트를 비활성화시켜도 OnCollisionEnter함수가 작동하는 것이었다.

 

 

 

'2025유니티수업' 카테고리의 다른 글

0715 (포톤)  (0) 2025.07.15
0714(포톤 채팅)  (1) 2025.07.14
0711 Photon(Pun, Realtime)  (0) 2025.07.11
0710 유니티(LineRenderer, 사운드매니저) , Pun2  (3) 2025.07.10
0709 유니티(헬기, )  (0) 2025.07.09