Unity 19

[Unity] 사운드, OGG와 MP3 차이

결론: 게임 내 배경음을 삽입할 때는 OGG 파일을 사용하자! 같은 음악이라도 MP3 형식으로 내보낸 파일은 OGG 형식으로 내보낸 파일보다 약간 길다. 이 때문에 루프가 되는 BGM을 넣어야 할 경우, MP3 형식을 사용하게 되면 음악 끝 - 시작 지점에서 끊기는 듯한 느낌을 받을 수 있다. 이는 두 형식의 압축 형식이 다르기 때문이다. MP3와 OGG 파일은 모두 손실 압축 파일이라는 공통점이 있다. 하지만 MP3 파일은 비트가 고정되어 있는 반면에 OGG 파일은 VBR(Variable Bit Rate) 형식으로 압축한다. 때문에 손실을 줄일 수 있고 MP3에 비해 높은 음질을 자랑한다. 더 자세한 정보는 아래 블로그들을 보며 학습하길 바란다. https://comphy.tistory.com/115 ..

Unity 2023.05.26

[Unity] Unity 최적화 공부(4)

프로그래밍 & 코드 아키텍쳐 Fixed Timestep project settings > Time > Fixed Timestep이 있다. 이는 물리적 연산주기를 의미한다. Update()는 매 프레임마다 호출되며 FixedUpdate는 물리적 연산 주기마다 호출된다. 이는 targetFrameRate를 맞추는 것이 좋다. 만약 timestep이 0.02 이라면 1초에 50번 돌아간다. 이걸 잘 맞추는 것을 간과하면 안된다. 이러한 targetFrameRate는 장르 별, 상황 별로 조절해야 한다. 예로 들어, 퍼즐 게임 같은 경우는 연산 주기가 빠를 필요가 없을 것이다. Adaptive Performance(Youtube 검색) 가변적으로 performance를 실시간으로 적절하게 변경 가능 비동기 로딩..

Unity 2021.05.16

[Unity] Unity 최적화 공부(3)

GPU Profiling GPU는 일부 플랫일부 플랫폼에서만 프로파일링이 가능하므로 GPU를 프로파일링하기 어렵다. 특히 대부분의 모바일 플랫폼에서는 Unity Profiler에 있는 GPU Usage를 사용할 수 없다. 따라서 모바일에서 GPU를 프로파일링할 때는 Bandwidth를 제공해주는 툴을 사용하거나 SnapDragon이나 Xcode같은 툴들을 사용하는 수밖에 없다. Fillrate 의미: GPU가 1 초에 픽셀에 매핑 할 수있는 텍스처 맵 요소의 수를 의미 Fillrate = (화면의 픽셀) x (프래그먼트쉐이더 복잡도) x (오버드로우) 요즘은 모바일 기기의 해상도가 높다보니 Fillrate가 부하되는 경우가 많다. PlayerSetting > Resolution Scaling의 Targe..

Unity 2021.05.13

[Unity] Unity 최적화 공부(2)

Unity Profiler 프로파일링을 도와주는 Unity 내의 Tool로, Window > Analysis > Profiler 에 있다. 이와 관련된 정식 문헌은 아래 링크를 참조하기를 바란다. https://docs.unity3d.com/kr/2018.4/Manual/ProfilerWindow.html 프로파일러 창 - Unity 매뉴얼 Unity 에디터에서 툴바를 통해 프로파일러 창에 액세스합니다. Window > Analysis > Profiler. docs.unity3d.com Profiler 창에서 성능 분석을 할 때, Hierachy와 Timeline 속성을 선택할 수 있다. Hierachy는 어떤 기능을 실행할 때, CPU/GPU를 어느 정도 차지하는지를 퍼센트로 보여주고 Timeline은..

Unity 2021.05.12

[Unity] Unity 최적화 공부(1)

유니티 최적화 타이밍 및 고려해야 할 점 Target Platform 및 Device를 정확하게 설정해야 한다. 프로토타입을 만드는 과정에서는 최적화를 할 것이 아니라 기능 구현에 초점을 맞추어야 한다. 프로파일링을 하면서 문제점을 파악한 후, 최적화를 해야 한다. 프로파일링과 최적화는 개발 막바지가 아닌 프로덕션 개발 과정 중간중간에 자주 해줘야 한다. 프로파일링 프로파일링이란, 병목탐지와 병목 제거의 순환 과정이다. 리소스들이 몰리는 지점을 탐지하고 이를 제거하는 것이 중요하다. 병목 제거는 추측이 아닌 프로파일링에 의한 근거를 가지고 임해야 한다. 프로파일링 주의 사항 추측에 의한 최적화 금지 디버거 / 프로파일러 툴의 적극적인 활용 유니티 에디터에서의 프로파일링은 단순 참고용 타겟 플랫폼에서의 프..

Unity 2021.05.12

[Unity] RequireComponent

Unity를 사용해 게임을 만들다보면 어떤 오브젝트 내에 스크립트를 삽입하고 이 스크립트 내에서 꼭 필요한 Component가 있을 것이다. 이 때, RequireComponent라는 스크립팅 API를 쓰면 편리하다. 이 API는 해당 Component가 오브젝트 내에 존재하지 않다면 에러를 발생시켜준다. 작성 방법은 아래와 같다. [RequireComponent(typeof(Collider))] public class SomeScript : MonoBehaviour { }

Unity 2021.04.10

[Unity] 3D object 내의 Canvas가 카메라를 바라보도록

게임을 만들다 보면 적의 닉네임과 남은 hp와 같은 정보를 현재 플레이어에게 보여줄 필요가 있다. 이 때, 적은 3d인 반면에 이를 나타내는 object는 2d이다. 따라서 이 canvas를 항상 카메라 방향으로 돌려줄 필요가 있다. 이럴 때는 Canvas 내에 아래 코드를 입력하여 Update 구문에 넣어주면 해결이 된다. void Update() { transform.LookAt(transform.position + Camera.main.transform.rotation * Vector3.forward, Camera.main.transform.rotation * Vector3.up); }

Unity 2021.04.06