Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

Moon_B 게임개발 공부 업적

[Unity] 오브젝트 풀링, Animator, StringToHash, FindGameObjectWithTag, Physics.Raycast 및 Physics2D.Raycast 본문

Unity

[Unity] 오브젝트 풀링, Animator, StringToHash, FindGameObjectWithTag, Physics.Raycast 및 Physics2D.Raycast

Moon_B 2025. 2. 27. 00:54

오브젝트 풀링이란?

  • 게임 개발에 널리 사용되는 테크닉으로, 게임의 성능을 개선하기 위해 사용됩니다.
  1. 오브젝트 풀링은 객체를 미리 생성해 두고 필요할 떄 가져다 사용하고, 사용이 끝나면 다시 풀에 반납하는 방식을 의미합니다.
  2. 생성(Instantiate)소멸(Destroy) 비용이 큰 작업을 최소화함으로 써 성능을 향상시키는데 중요한 역할을 합니다.
  3. 자주 생성과 파괴되는 객체(총알, 입자, 몬스터)를 주로 오브젝트 풀링 방식으로 재사용함으로써 메모리 할당과 가비지 컬렉션에 따른 성능 저하를 방지할 수 있습니다.
  4. 주의) 적절히 사용하면 큰 성능 개선을 가져올 수 있지만, 불필요한 메모리 사용을 증가시킬 수 있으므로 사용 시에는 신중해야 합니다. 오브젝트 풀의 크기를 적절히 조절하는 것이 중요합니다.

Animator

  • Animator 컴포넌트는 애니메이션의 상태를 제어하고 전황을 관리하는데 사용됩니다.
  • 걷기, 뛰기, 점프, 대기, 등의 애니메이션을 관리하는 데 사용될 수 있습니다.
  • Mecanim 애니메이션 일부로서, 애니메이션 블렌딩, 트리, 상태 머신 등의 기능을 제공합니다.

Animation은 더 간단한 애니메이션에 사용되며, Animator는 더 복잡한 애니메이션 시퀀스와 상태 관리에 사용됩니다.

Animator Override Controller

  • 같은 애니메이션 구성을 가진 다른 오브젝트가 있는 경우, 애니메이션 파일만 갈아끼워서 같은 애니메이터를 활용하게 하는 컴포넌트입니다.
  • 잡몹들의 행동들은 거의 똑같은데 그림만 바뀌는 게임에서 활용할 수 있겠습니다!

StringToHash

Unity 애니메이션 시스템에서 자주 사용되는 기능으로, 문자열을 해시 값으로 변환하여 성능을 개선하고 코드의 가독성을 유지합니다.

  • 연산 비용 절감: 문자열 비교는 상대적으로 연산 비용이 큰 작업이며, 해시 값으로 변환하면 이를 줄일 수 있습니다.
  • 고유한 해시 값: 서로 다른 문자열이 동일한 해시 값을 가질 확률이 매우 낮아 안전하게 활용할 수 있습니다.
  • 애니메이션 최적화: 애니메이션 파라미터를 문자열 대신 해시 값으로 지정하면 CPU 성능을 절약할 수 있습니다.
  • 일방향 변환: StringToHash 함수는 해시 값을 다시 원래 문자열로 변환할 수 없습니다.

StringToHash는 문자열을 해시 값으로 변환하여 성능을 향상시키며, 특히 애니메이션 시스템에서 유용하게 활용됩니다.


싱글턴 패턴

싱글턴 패턴은 특정 클래스의 인스턴스를 하나만 유지하고 전역적으로 접근할 수 있도록 하는 디자인 패턴입니다.

  • 전역적인 상태 관리: 객체 간 데이터를 공유할 수 있음

  • 메모리 관리 주의 필요: 프로그램이 종료될 때까지 인스턴스가 유지됨

  • 테스트 및 유지보수 문제 발생 가능: 잘못 사용하면 코드 결합도가 높아짐

싱글턴 패턴은 애플리케이션에서 하나의 인스턴스를 유지하는 방식으로, 메모리 관리에 신경써서 신중하게 사용해야 합니다.


FindGameObjectWithTag

FindGameObjectWithTag는 특정 태그를 가진 첫 번째 활성 GameObject를 반환하는 Unity 함수입니다.

  • 빠른 검색 가능: 특정 태그를 가진 오브젝트 탐색
  • 연산 비용 큼: 매 프레임 호출 시 성능 저하 발생 가능
  • 초기화 시 사용 추천: Start 또는 Awake에서 한 번만 호출 후 참조 저장

FindGameObjectWithTag는 특정 태그를 가진 오브젝트를 찾을 때 사용되며, 성능 최적화를 고려하여 사용해야 합니다.


Physics.Raycast 및 Physics2D.Raycast

Raycasting은 특정 방향으로 광선을 쏘아 충돌하는 오브젝트를 감지하는 기술입니다.

  • 충돌 감지: 플레이어 시야, 총알 경로 계산 등 사용
  • Physics.Raycast와 Physics2D.Raycast: 3D 및 2D 환경에서 각각 사용
  • 최적화 중요: 과도한 호출 시 성능 저하 가능
  • 디버깅 지원: Debug.DrawRay로 Raycast 경로 시각화 가능

Raycast는 충돌 감지를 위한 강력한 도구이며, 성능 최적화를 고려하여 적절히 활용해야 합니다.