프로젝트/스네이크 프로젝트

[스네이크] - 스네이크(플레이어, 적) Lv표시 [최적화]

MuscleDeveloper5683 2024. 11. 26. 19:47
728x90
SMALL

 

지금 모든 스네이크들에서 LV을 표시해주고 있다.

 

하지만 문제점이 하나 있다.

 

문제점

 - 각 객체마다 한개의 Canvas를 가지고 있다. 

 

Canvas가 여려개 있는 모습

 

 

이렇게 사용돼서 객체가 많아지면 성능저하가 될 수 있다.

 

 

Canvas하나로 스네이크들의 LV을 관리하는 식으로 수정해보자.

 

 

 

1. 하나로 관리할 Canvas 생성 - World Space

 

 

 

 

2. 캔버스에서 레벨 표시및 관리할 스크립트 생성 및 수정(UIViewFloatingHUD.cs)

 

스크립트 추가

 

 

UIViewFloatingHUD.cs - Unity 게임 내에서 플레이어와 적 스네이크의 레벨 및 상태 정보를 화면에 HUD 형태로 표시하기 위함

 

 

 

 

  • HUD 생성 및 초기화:
    • Initialize 메서드는 스네이크 트랜스폼을 기반으로 HUD를 생성하여 레벨을 초기 설정하고, 해당 HUD가 플레이어인지 적인지에 따라 다른 리스트에 저장한다.

 

  • HUD 삭제:
    • 적 스네이크가 제거될 때 해당 스네이크의 HUD도 삭제하여 HUD 정보가 남지 않도록 관리한다.
  • 레벨업 UI 업데이트:
    • 플레이어 또는 적 스네이크가 레벨업할 때, HUD에 있는 레벨 표시도 업데이트하여 변화된 레벨을 시각적으로 반영합니다.

 

 

3. 레벨을 표시해줄 레벨 텍스트 프리팹 생성

 

 

 

4. 레벨 텍스트에서 표시할 정보.. 를 관리할 스크립트 생성 및 수정(LevelText.Cs)

 

 

 

FloatingHUDLevel.cs - HUD의 텍스트가 플레이어나 적 스네이크를 따라다니며 실시간으로 레벨 정보를 표시하는 것을 목적

 

 

 

HUD 표시 위치 및 추적:

  • LateUpdate에서 followTarget의 위치를 따라 HUD가 이동하며, 카메라의 방향을 따라 HUD 텍스트가 카메라를 향하게 한다.

 

 

HUD 초기화:

  • Init 메서드는 HUD가 표시될 캐릭터를 따라다니도록 설정하며, 플레이어와 적의 레벨에 따라 색상을 구분해 HUD를 초기화한다.

 

 

레벨 표시 업데이트:

  • SetLevel 메서드와 LevelUp 메서드로 캐릭터의 현재 레벨을 UI에 반영하여, 유저가 레벨 변화를 확인할 수 있다.

 

 

HUD 제거:

  • 캐릭터가 제거될 때 DestroyHUD 메서드를 통해 HUD 객체도 제거하여 UI 정리를 수행한다.

 

 

 

결과

 

 

 

 

728x90