Application.dataPath와 Application.persistentDataPath
·
코드 및 공부/데이터 관리
유니티 버전 - 2022.3.48f1     목차Application.dataPath 와 Application.persistentDataPathPath.Combine()와 문자열 연산+      들어가며파일 경로나 디렉터리를 다룰 때, Application.dataPath와 +를 이용하여 경로를 연결하는 방법은 흔하게 사용됩니다Application.persistentDataPath와 Path.Combine과 비교하여 장단점과 메모리 사용량, 성능 차이를 다뤄보겠습니다     Application.dataPath 와 Application.persistentDataPath위의 둘은 다른 방식이지만 게임 데이터 파일에 접근하기 위한 경로를 반환합니다, 하지만 둘의 목적이 다르고 Application.dataP..
Cinemachine과 Pixel Perfect Camera
·
코드 및 공부/카메라
유니티 버전 - 2022.3.17f1     목차Lens -> Ortho SizeCinemachine 설정Camera 설정     Lens -> Ortho Size16 PPU의 스프라이트를 이용하고, 16:9 비율을 사용한다고 가정하겠습니다 A는 Ortho Size입니다, 스크린의 1/2 크기를 나타냅니다B는 세로 픽셀 개수 입니다, 현재 270 픽셀을 보여주고자 합니다C는 가로 픽셀 개수 입니다, 현재 16:9 비율의 픽셀을 보여주고자 합니다 A를 구하기위해서는 먼저 화면에 보여주고싶은 픽셀의 개수를 생각해봐야합니다, 세로로 270픽셀을 보여주는 기준입니다 화면의 전체 높이(B)는 270이고, 270 = X * 16 일 것입니다 X의 값을 구해보면 16.875라는 값이 나오고, 자연스럽게 A(Ortho..
Debug
·
코드 및 공부/기타
유니티 버전 - 2022.3.48f1     목차Debug 클래스자주 사용되는 Debug마치며     Debug 클래스Debug 클래스는 Unity에서 디버깅을 위한 다양한 기능을 제공하는 정적 클래스입니다게임 개발 중 발생하는 문제를 추적하고, 게임의 상태를 확인하며, 코드 실행 중의 정보 출력을 용이하게 해줍니다개발을 할때 Debug 클래스를 이용하여 다양한 로그 메시지를 출력할 수 있으며, 이를 통해 게임의 로직을 분석하고 버그를수정하는 데 도움을 받을 수 있습니다 아래에는 Debug. Log / LogWarning / LogError / Assert / DrawRay에 대하여 다루고 있습니다    자주 사용되는 Debug Debug.Log게임 실행 중 일반 정보를 출력할 때 사용합니다, 게임의 상..
콘솔 창(Console)
·
코드 및 공부/기타
유니티 버전 - 2022.3.48f1     목차콘솔 창마치며     콘솔 창Unity의 콘솔 창은 게임 개발 중 디버깅과 문제 해결을 위해 필수적인 도구입니다 로그, 경고, 오류를 관리하고, 메시지를 필터링 및 검색할 수 있는 기능을 통해 게임의 실행 상태를 쉽게 확인하고, 발생하는 문제를 신속하게 해결할 수 있습니다  콘솔 창을 살펴보겠습니다   Clear먼저 Clear입니다, 해당 버튼을 누르면 콘솔창의 메시지들을 모두 지웁니다아래 옵션을 이용하여 해당 동작 수행시 자동적으로 Clear 해줍니다    Collapse반복해서 발생하는 메시지를 모두 표시하는 대신 첫번째 인스턴스만 보여줍니다    Error PauseDebug.LogError을 스크립트에서 호출할 때마다 재생을 일시 정지 합니다   검..
RaycastAll과 RaycastNonAlloc
·
코드 및 공부/물리
유니티 버전 - 2022.3.48f1     목차RaycastAll과 RaycastNonAlloc의 차이RaycastNonAlloc 이용RaycastNonAlloc 응용마치며  RaycastAll과 RaycastNonAlloc의 차이RaycastAll과 RaycastNonAlloc는 둘 다 Ray를 사용하여 오브젝트와의 충돌을 감지하지만, 성능과 메모리 사용 측면에서 차이가 있습니다 구분RaycastAllRaycastNonAlloc메모리 할당매 호출 시마다 새로운 배열 생성 미리 정의된 배열 사용으로 메모리 최소화GC의 부담높음낮음반환 오브젝트충돌한 모든 오브젝트의 정보 반환배열 크기 내에서의 충돌 정보만 반환(나머지는 버려짐)적합한 상황가끔 호출되고, 충돌시의 모든 정보가 필요할때빈번히 호출되고, 최적..
Physics.Raycast
·
코드 및 공부/물리
유니티 버전 - 2022.3.48f1     목차Raycast란Raycast와 RaycastHit마치며     Raycast란Raycast는 가상의 광선(Ray)를 특정 방향으로 쏘아 그 경로에서 충돌하는 물체를 감지하는 기능입니다, 이를 통해 광선에 맞은 오브젝트의 정보를 얻을 수 있습니다     Raycast와 RaycastHit   RaycastRaycast를 사용하기 위해서 선행되는 조건은 다음과 같습니다 Ray에 맞은 오브젝트의 정보를 가져오기 위해서는 오브젝트에 Collider가 존재해야합니다Raycast에 레이어 마스크를 사용하는 경우, 오브젝트가 지정된 레이어에 속해야만 Ray에 의하여 감지됩니다Ray의 최대 길이를 지정하였다면, 오브젝트가 미리 설정한 범위 내에 존재햐야합니다마지막으로 레..
디자인 패턴 - 싱글톤 패턴(프로퍼티를 이용한 null 체크)
·
코드 및 공부/이론
유니티 버전 - 2022.3.48f1     목차들어가며코드 및 설명마치며     들어가며어떤 스크립트에서 싱글톤 패턴을 구현할때 일반적으로 Awake에서 null체크를 하고 instance를 지정해주는 것이 일반적입니다, 하지만 모종의 이유로 스크립트가 붙은 오브젝트 자체가 씬에 없다면 스크립트를 참조하려고 할때 오류가 발생할 것입니다, 프로퍼티를 이용하여 더 안전한 접근을 하는 방법을 구현해보겠습니다      코드 및 설명먼저 Awake입니다, 오브젝트가 활성화 상태로 존재한다면 실행되면서 인스턴스를 지정해줍니다 private void Awake() { if (instance == null) { instance = this; } ..
이벤트 함수의 실행 순서
·
코드 및 공부/기타
유니티 버전 - 2022.3.48f1     목차들어가며Legend생명 주기마치며     들어가며Unity에서 게임 오브젝트의 행동과 상호작용을 제어하는 핵심 요소 중 하나가 바로 이벤트 함수입니다, 이러한 함수들은 특정한 타이밍에 Unity 엔진에 의해 자동으로 호출되며, 게임이 시작할 때부터 종료할 때까지 여러 가지 상태 변화에 대응합니다 이벤트 함수들의 실행 순서와 각 함수의 역할에 대해 알아보겠습니다. 게임 로직을 더 효율적으로 관리하고 싶다면, Unity의 이벤트 함수가 어떻게 작동하는지 이해하는 것이 중요합니다    Legend 먼저 유니티에서 제공하는 메뉴얼입니다, 이것을 바탕으로 설명하겠습니다더보기https://docs.unity3d.com/kr/2022.3/Manual/ExecutionO..
TagManager.preset을 이용한 태그 및 레이어 관리
·
코드 및 공부/기타
유니티 버전 - 2022.3.48f1     목차들어가며TagManager.preset이란?TagManager.preset 만들기TagManager.preset 적용하기마치며     들어가며게임 개발을 하다 보면 다양한 객체를 효과적으로 관리하기 위해 태그와 레이어를 사용하게 됩니다, 이러한 태그와 레이어를 설정하고 관리하는 필요한 것이 TagManager.preset입니다 태그와 레이어 설정을 .preset 파일로 저장할 수 있습니다, 이를 통해 팀원 간의 협업이 용이해집니다 TagManager.preset의 사용 방법에 대해 알아보겠습니다.     TagManager.preset 만들기개발을하며 작성한 태그와 레이어가 있다고하겠습니다, 이것을 프리셋으로 저장 시켜보겠습니다   우측 상단의 볼륨 조절하..
using System을 이용한 시간 참조
·
코드 및 공부/물리
유니티 버전 - 2022.3.17f1     목차들어가며using System 지시문DateTime시간 관련 유용한 메서드마치며     들어가며System 네임스페이스를 정의하고 그 안의 클래스와 메서드들을 이용하여 시간 관련 유용한 기능들을 알아보겠습니다     DateTime날짜나 시간 정보를 저장하는 데 특화된 구조체 입니다, 연도, 월, 일, 시, 분, 초 등 다양한 정보를 담고 있습니다 먼저 DateTime변수를 선언하고 현재의 날짜와 시간을 출력하여보겠습니다using System;public class Test : MonoBehaviour{ private DateTime dateTime; private void Start() { dateTime = DateTime...