카테고리 없음

CompareTag("name")로 other.tag 대체

ruripanda 2024. 10. 11. 00:40
  void OnTriggerEnter(Collider other)
  {
      //충돌한 상대방 게임 오브젝트가 Player 태그를 가진 경우
      //태그 충돌감지의 경우 other.tag보다 CompareTag()가 더 자원을 적게 먹는다
      if (CompareTag("Player"))
      {
          //상대방 게임 오브젝트에서 PlayerCtrl 컴포넌트 가져오기
          PlayerCtrl playerCtrl = other.GetComponent<PlayerCtrl>();

          //상대방으로 부터 PlayerCtrl 컴포넌트를 가져오는데 성공했다면
          if (playerCtrl != null)
          {
              //상대방 PlayerCtrl 컴포넌트의 Die()메서드 실행
              playerCtrl.Die();
          }
      }
  }

 

ComparTag("Player")로 tag 감지를 하면

other.tag == "Player"보다 자원을 적게먹는다

최대 27%까지 자원을 덜 먹는다는 분도 계심

이유는 other.tag는 Player의 이름 값을 복제해오는게 문제

대량의 오브젝트가 other.tag로 이름 값을 받아오게 되면 자원을 많이 잡아먹고 처리가 지연됨

C#의 경우 가비지 컬렉터가 자기 마음대로 메모리를 관리하기 때문에 언제 복사된 값이 지워질지 모름 ㄷㄷㄷ

 

그리고 간혹 ComparTag가 안 먹히는 경우가 있는데 이럴때는 속편하게

other.tag == "name" 테그를 이용하자