728x90
반응형
SMALL

unity 56

Unity URP 퀄리티 설정

오늘은 설정창에 있는 그래픽품질 설정을 하다가 URP( Universal Render Pipeline) 퀄리티 설정을 알게 됐다.Unity의 URP에서는 각 퀄리티 레벨마다 그래픽 처리 방식을 세부적으로 설정할 수 있다.이 설정은 Edit > Project Settings > Quality에서 퀄리티 레벨을 나누고, 각 레벨별로 URP Asset을 연결해서 적용된다. 다음은 URP Asset 구조이다. - Universal Render Pipeline Asset전체적인 그래픽 품질 설정예: MSAA, 그림자 거리, 렌더 스케일 등 - Renderer Feature 포함 Renderer Asset각 카메라나 레이어에 대해 어떤 렌더링 기능(AO, 그림자 등)을 사용할지 정의예: SSAO, Bloom, Ou..

TIL 2025.05.30

트러블슈팅 - 사이렌 관련

나는 다음 주 월요일 최종발표회를 앞두고 트러블슈팅을 발표해야해서 내가 작업하며 일어난 트러블슈팅을 정리했다. 우선 트러블슈팅이란?트러블슈팅(Troubleshooting)은 말 그대로 문제를 찾아서 해결하는 과정을 뜻한다.소프트웨어 개발, 하드웨어, 네트워크, 게임 개발 등 어떤 기술 분야에서든 필수적인 작업이다. 어떤 문제가 발생했냐면 사이렌이 한 번 울리면 다른 사이렌들까지 6분까지 안울리게 코딩을 해놨었다.그래서 한 번 울리고 난 뒤, 6분이 지나기 전에 게임이 오버가 되면 그 뒤부턴 영원히 사이렌이 울리지 않는 버그를 마주쳤다. 이것을 해결하려던 찰나 마침 사이렌 기획이 바꼈다. 이제 한 번 울리면 그 다음부턴 그 사이렌은 안울리고, 다른 사이렌들은상관없이 닿으면 또 울리는 구조로. 그래서 코드의..

TIL 2025.05.29

점프공격하는 좀비 만들기

나는 오늘 점프해서 공격하는 좀비 만들었다.점프해서 공격하는 애니메이션은 외부에서 가져와서 애니메이션은 쉽게 해결했는데.데미지 처리와 이동하는 값을 조정을 해야해서 애를 먹었다.어떻게 했는지 코드로 보자 우선 누가 맞을지를 정해야하기때문에 레이어 마스크를 선언한다.그리고 Enter에서 쿨타임과 bool 값을 관리해준다. 그리고 Execute에서 타겟에게 다가가면서 점프를 하는 로직이 작성돼있다. 그리고 마지막으로 가장 중요한 Attack함수이다.Attack함수는 애니메이션에 이벤트로 등록을 해놨는데어떤 방식이냐면 콜라이더를 만들어서 그 안에 들어온 애중에 내가 선택한 레이어를 달고있는 오브젝트면 데미지를 입히는 것이다.그래서 foreach로 콜라이더 안에 들어온 애를 찾아서 데미지를 입힌다.이상 점프공격..

TIL 2025.05.28

몬스터 상태 전이 디버깅하면서 느낀 점

오늘은 Fusion 기반 상태 머신 구조에서 몬스터가 계속 뛰기만 하는 버그를 잡는 데 시간을 꽤 썼다.결과적으로 코드엔 큰 문제가 없었는데, 조건들이 너무 빡빡해서 공격 상태로 전환할 수 없는 상황이었던 거였다. 처음엔 단순히 "로직이 잘못됐나?"라고 생각했다.여러 상태가 있는데도 Run만 반복해서, 상태 전이가 아예 안 되는 줄 알았다. 근데 디버깅하면서 하나하나 찍어보니1. 거리 조건은 미세하게 안 닿고2. 스킬 쿨다운도 전부 돌고 있어서결국 선택할 수 있는 패턴이 없는 상황이었다.결과적으론 문제 없는 코드였는데, 조건을 너무 빡빡하게 짠 게 문제였다. 추적 로직이 특정 조건 안에만 들어있어서, 몬스터가 멈춰 있는 느낌도 있었는데그걸 Execute()의 공통 영역으로 빼주니까 움직임이 훨씬 자연스러..

TIL 2025.05.27

Unity AudioManager 구현

Unity에서 BGM과 SFX를 통합적으로 관리할 수 있는 AudioManager 클래스를 만들어봤다.이 시스템은 다음과 같은 기능을 한다.배경 음악 재생 / 정지효과음 재생 / 정지효과음 랜덤 재생 (여러 클립 중 하나)마스터 / BGM / SFX 볼륨 조절 (AudioMixer 사용)싱글톤 패턴 기반의 전역 오디오 매니저 Bgms: 배경 음악 종류를 나열Sfxs: 효과음 종류를 나열Enum을 사용함으로써 코드에서 직관적으로 사운드를 지정 가능하다. BgmClip: 하나의 배경음 클립과 그 타입을 묶음SfxClip: 여러 개의 효과음 클립을 리스트로 묶음 → 랜덤 재생 지원[Serializable]을 통해 인스펙터에서 리스트 편집 가능SfxClip을 랜덤 재생을 지원한 이유는 좀비의 공격 사운드, 플레..

TIL 2025.05.26

ESC키로 메뉴판, 설정창 끄게 하기

나는 ESC키로 메뉴판을 키게 만들었었다.ESC키로 메뉴판을 키고, 그 다음으로 설정창을 버튼클릭으로 키게하고, 설정창 끄는 것은 버튼 클릭으로 끄게 했다.그런데 유저피드백을 실행한 결과, ESC키로 설정창도 끄게 했으면 좋겠다. 라고 피드백이 들어왔다.이렇게 켜서 취소를 클릭해서 닫는 구조였다.그래서 리팩토링을 실시했다. 원래는 이렇게 ESC키를 눌렀을때 만약 메뉴팝업이 꺼져있다면 메뉴팝업을 켜주고 꺼져있다면 꺼주는 구조였다.그런데이렇게 안에 if문을 추가했다.메뉴팝업이 켜져있다면에서 if문을 추가해서 유아이셋뷰, 즉 설정창이 켜져있다면 설정창을 꺼라 라고 실행했다.List의 함수를 사용했는데 어떻게 리스트를 사용할 수 있었냐면 바로 UIManager가 이런 구조였기 때문에 가능했다.UIList에 있다..

TIL 2025.05.23

UIManager로 UI 동적 생성하기

오늘은 내가 짯던 코드 중 UIManager에 대해 소개해보겠다. 먼저 모든 UI들의 부모인 UIBase를 작성해준다.필요한 것들을 우선 재정의할수 있게 함수를 virtual로 작성해준다그 다음 UIManager이다. Show함수는 리소스폴더에 UI폴더안에 있는 애들 중 이름을 검색해서 찾아서 보여준다. 하지만 string으로 검색하면오타가 날 수 있고, 신경써야할 것이 많기때문에 제네릭을 활용해서 클래스명으로 찾을 수 있게 하였다. 그 다음은 Hide함수이다. 얘는 매우 간단하다. UIList안에 있는 애들을 검색해서 찾은 다음 그 오브젝트를 꺼주는 것이다. 보통이라면 이 UIManager를 싱글톤으로 사용하면 되지만나는 싱글톤을 총 관리해주는 Global이라는 클래스를 따로 만들어서 구현해주었다.이렇..

TIL 2025.05.22

최적화 - 오쿨루전 컬링(Occlusion Culling)

나는 오늘 프로젝트 최적화 작업 중 오쿨루전 컬링을 했는데 오쿨루전 컬링이란 다른 오브젝트에 가려지거나 카메라에 보이지 않는 오브젝트들은 렌더링하지 않는 방법이다. 이제 하는 방법을 소개해보겠다.먼저 카메라 컴포넌트에 Occlusion Culling을 체크해준다. 그 다음 오브젝트 Static 속성에서 Occluder Static과 Occludee Static을 체크해준다. 마지막으로,베이크를 해주면 끝이다. 참 쉽죠 ㅅㄴ

TIL 2025.05.20

원거리 공격하는 몬스터 나 쳐다보게 하기

오늘은 원거리 공격을 하는 몬스터가 계속 나를 쳐다보게하여 공격이 따라오게 만들었다. 몬스터의 프레임워크 설명은 생략하고 어떻게 구현했는지만 소개하겠다.Vomit은 구토라는 뜻으로 구토를 날려 공격하는 좀비이다. Execute는 매 프레임당 호출되는 Update인데 여기서 좀비가 나를 계속 쳐다보게 만들었다.나를 쳐다보려면 좀비의 로테이션값이 계속 변동이 돼야한다. 그리고, 고개를 위아래로 회전할일은 없기 때문에 y 값은 0으로 고정시켰다. 이것은 애니메이션 이벤트로 등록하여 좀비가 토사물 공격을 하는 로직이다.별거없다. 공격하기 전에 타겟의 포지션 값을 가져와 그쪽으로 발사하라는 것이다.

TIL 2025.05.19

총구화염 애니메이션 이벤트로 구현하기

오늘은 총구화염을 애니메이션 이벤트로 구현해보겠다. 되게 간단하다. 먼저 스크립트에서이렇게 파티클을 변수로 지정한다. 그 다음 파티클을 플레이하는 함수를 작성한다!끝이다. 놀랍게도 끝이다. 이제 이걸 애니메이션에서 등록만 해주면 된다. 이런 총을 쏘는 애니메이션이 있다. 여기서 원하는 위치에 Add Animation Event를 하여 아까 작성한 함수를 지정해주면 된다.그리고 주의할 점이 있다.내가 플레이 할 파티클을 프로젝트 파일에서 프리팹화 돼있는 파일을 캐싱하지말고,저렇게 미리 넣어둬야 한다.그리고 넣어준 파티클을 캐싱해준다.그러면 문제 없이 잘 작동할 것이다.파티클 설정은 Looping은 꺼주고, Play On Awake는 켜주면 끝이다.

TIL 2025.05.16
728x90
반응형
LIST