본문 바로가기

Unity 간단 기능 정리 모음 #6

@코야딩구2025. 7. 28. 19:46

🧩 Animator 해시값으로 최적화하기

- Animator에서 문자열로 비교하는 것보다 StringToHash를 통해 미리 계산된 int 값을 사용하는 편이 성능상 유리하다.

private static readonly int IsMoving = Animator.StringToHash("IsMove");
public void Move(Vector2 obj)
{
    animator.SetBool(IsMoving, obj.magnitude > .5f);
}

🧩Expression-bodied member(표현식 본체 멤버, Expression-bodied Property)

- 다음 두 코드는 같은 의미를 가진다.

public float MaxHealth => statHandler.Health;

public float MaxHealth
{
    get { return statHandler.Health; }
}
// 보완된 형태는 다음과 같다.
public float MaxHealth => statHandler?.Health ?? 0f;
// 삼항연산자로도 표현할 수 있다.
public float MaxHealth => statHandler != null ? statHandler.Health : 0f;

🧩 Unity 패키지 내보내기 팁

- 코드 네임스페이스를 나누고 .unitypackage로 내보내면 추후 프로젝트별 관리가 쉬워진다.

- 단, 패키지를 임포트해도 의존 패키지(ex. TextMeshPro)는 자동 설치되지 않는다.

🧩 타일맵 경계 최적화

타일맵 편집 후 Tilemap → Compress Tilemap Bounds를 눌러주면 실제 타일이 배치된 범위만큼만 경계를 최적화할 수 있다.

📌 애니메이션 이벤트 추가 방법

- 애니메이션 Timeline에서 특정 프레임에 이벤트를 추가하여, 해당 시점에 원하는 함수를 호출할 수 있다.
- 예를 들어, 타격 모션 중간에 Attack() 함수를 호출할 수 있다.

- 💡 함수는 public void FunctionName() 형태로 MonoBehaviour 스크립트에 정의해야 하고, Animator 가 연결된 GameObject에 해당 스크립트가 부착되어 있어야 한다.

📌 다양한 레이캐스트 활용법 (Ray, Box, Sphere)

📌 Raycast

Physics.Raycast(origin, direction, out hit, maxDistance);

📌 BoxCast

Physics.BoxCast(center, halfExtents, direction, out hit, orientation);

📌 SphereCast

// origin: 구체의 시작 중심 위치, hit: 충돌된 정보를 담을 RaycastHit 구조체
Physics.SphereCast(origin, radius, direction, out hit, maxDistance);

- 각 캐스트마다 적절한 물리 구조와 상황에 맞게 활용해야 한다. 특히 충돌 범위를 넓게 보거나, 정밀하게 감지할 때 차이가 크다.

 

목차