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도 저렇다
<문제상황>
나는 처음에는 스크립트 자체를 비활성화시키면,
당연히 그 스크립트 내에 있는 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 |