
7월 유니티 챌린지 나 혼자만 레벨 업:Unity로 갓생살기의 사전 미션으로 unity 개발을 하면서 겪었던 어려움과 그 극복 과정을 작성하며 되새기는 과제이다.Wheel Collider를 활용한 자동차 구현 : unity에서 지원하는 wheel collider를 이용

2D게임을 만들 때 플레이어가 맵의 끝쪽으로 이동하면 카메라가 맵 밖을 비추게 된다. 게임 플레이에 크게 불편한 점은 없겠지만, 디테일을 살리기 위해 카메라 범위를 제한해서 맵 밖이 안보이도록 만들어보자! 현재 왼쪽 사진처럼 카메라가 맵 밖을 비추는 상황인데,

내가 현재 공부할 겸(?) 개발하고 있는 게임은 Dodge기반 게임이다. 그래서 오늘은 사방에서 플레이어를 향해 날라오는 총알을 구현할 것이다. 총알을 발사하는 방법은 여러가지가 있을 수 있는데 오늘은 2가지 방법을 소개한다. 첫번째 방법은 플레이어와 총알을 발사하

게임을 즐기는 대부분의 사람들은 전체화면으로 게임을 하지만 개인적으로 나는 창모드로 게임을 하는 것을 좋아한다. 그래서 이번엔 해상도를 변경해서 창모드로 게임을 즐길수 있도록 설정을 만들 것이다. 먼저 위 사진처럼 UI의 Panel을 이용해서 설정창을 만들고, Pane

저번에 해상도를 변경할 수 있는 설정을 만들었다. 설정창에 해상도변경 기능밖에 없어 되게 허전한 느낌이다. 그래서 이번엔 인게임 내에서 사운드를 조절하는 설정을 만들어 볼 예정이다.나는 게임의 전체 볼륨을 조절하는 마스터 볼륨이 아니라 배경음과 효과음으로 나누어 조절할

객체 지향 언어의 큰 장점 중 하나인 다형성에 대해 알아보자.다형성은 문자 그대로 해석하면 '여러가지 형태'라는 뜻이다. C간단한 예를 들면 몬스터라는 카테고리에는 좀비, 드래곤 등이 포함될 수 있다. 공격한다, 죽는다 와같이 여러부분 공통점이 있을 것이다. 이럴 때

[들어가기 앞서] 먼저 NavMesh가 뭔지 알아보자. Unity에서는 한 위치에서 다른 위치로의 경로를 계산하고 실시간으로 장애물을 피하며 이동하는 인공지능을 만드는 Navigation 시스템을 제공한다. 이 Navigation 시스템에 사용되는 오브젝트가 크게 4

오늘은 전에 다형성을 활용해서 만든 아이템들을 맵에 스폰시켜보려고한다. 단순하게 Instantiate()를 사용해서 생성하고 Destroy()를 사용해서 파괴할 수도 있지만, 오브젝트 생성은 메모리를 새로 할당하고 리소스를 로드하는 초기하 과정이고, 오브젝트 파괴는 이

Unity 엔진을 사용하다 보면 Awake, Start, Update 같은 생명주기 함수들이 자동으로 호출되는 경험을 누구나 하게 된다.그런데 어느 순간 이런 의문이 생겼다."접근 제한자를 바꿔도 되는데?""virtual/override를 쓰지도 않는데?""대체 이 함

Task와 await를 사용하던 도중 문득Task.Run은 스레드를 새로 만드는 것인지await가 붙으면 정확히 뭐가 일어나는 건지Task 대신 UniTask를 쓰는게 좋다는데, 뭐가 다른지\*\*\*등이 궁금해져서 CTask는 간단히 말하면 "미래에 완료될 작업을 표

이전에 Task와 UniTask의 동작 방식을 정리하면서, 코루틴도 함께 정리해두면 좋겠다는 생각이 들었다.그래서 이번 글에서는 코루틴이 실제로 어떤 구조로 동작하는지, 그 원리를 정리해보려고 한다.많은 개발자가 처음 하는 오해는 이것이다.코루틴 = 비동기 -> 스레드

Unity에서 자주 사용하는 기능중에 DontDestroyOnLoad라는 기능이 있다.새로운 씬으로 넘어가도 오브젝트가 사라지지 않도록 해주는 기능이라 게임 전체를 관리하는 매니저 객체에서 흔히 사용된다.나는 "DontDestroyOnLoad로 지정하면 Unity가 해

최근 퍼즐 게임을 개발할 때 MVVM 패턴을 사용하는 케이스가 많다는 이야기를 들었다.특히 UI 요소가 많고, 게임 상태와 연출이 분리되어야 하며, 동일한 데이터를 여러 UI가 바라보는 구조가 빈번할 때 유지보수와 확장성이 크게 좋아진다고 한다.그래서 이번 기회에 "M

Unity에서 게임 데이터를 관리할 때 자주 사용하는 기능이 바로 ScriptableObject이다.하지만 막상 내부 구조가 어떻게 되어 있는지, 왜 MonoBehaviour와 다르게 동작하는지 확실하게 아는 부분이 없어서 이번 기회에 파헤쳐보려고 한다.Unity 공식

Unity에서 프로젝트 규모가 커질수록 리소스 로딩, 메모리 관리, 업데이트 방식이 점점 더 복잡해진다.그래서 최근엔 많은 프로젝트에서 Addressables을 표준처럼 사용하고 있다.그래서 오늘은 Addressables의 내부 구조가 어떻게 되어 있는지, 어떤 흐름으

개발을 하다보면 UI, 로직, 매니저 간의 의존성이 점점 복잡해지기 마련이다. 예를 들면, 버튼 하나를 눌렀을 뿐인데 여러 시스템이 동시에 반응해야 하는 구조가 흔해진다.이때 가장 많이 사용되는 구조가 delegate, Action, event 기반의 이벤트 시스템이다

Unity에서 캐릭터 이동, 물리 처리, 카메라 추적, 입력 처리 같은 로직은 Update, FixedUpdate, LateUpdate 중 하나에서 처리되는데,이 세 함수의 차이를 정확히 이해하지 못하면 카메라 떨림, 물리 오차, 입력 지연 같은 문제가 쉽게 발생한다.