유니티/공통 14

유니티 - 카메라와 컬링에 대해 알아보자 (feat. LOD)

2024.11.27 - [분류 전체보기] - 게임 그래픽스에 대해 알아보자 #1 (렌더링 파이프 라인) 오늘은 카메라와 컬링에 대해 정리해 보고자 합니다.Culling ? 3D 그래픽스에서 불필요한 렌더링을 제거하는 최적화 기술  컬링은 CPU 영역에서 대상을 체크하고,실제 잘리는 건 GPU 영역, 렌더링 파이프라인 단위에서 이루어진다고 합니다.  (엔진 단위에서의 컬링 설명) MVP Transformation(Vertex Transformation) 모델 공간 -> 월드 공간 -> 카메라 공간(View 공간)-> Projection Transform 공간으로변환 과정을 통해 3D 공간 객체를 2D 화면에 표시하는 과정을 말합니다.Frustum Culling카메라의 시야 범위(프러스텀) 밖의 오브젝트를 ..

유니티/공통 2024.11.28

DLL( Dynamic Link Library)에 대해 알아보자 (feat : PDB(Program Database), Assembly definition)

2024.11.21 - [분류 전체보기] - 유니티 - 디버깅을 해보자 (feat : 유니티 Debug, IDE 중단점 활용 법) 오늘은 DLL에 대해 알아보고자 합니다. 이전에 디버깅 글을 작성하면서 DLL에 관한 내용이 나오길래호기심에 찾아 정리해 봤습니다. DLL( Dynamic Link Library )? Library - 컴퓨터 프로그램이 사용하는 비휘발성 자원(함수, 데이터, 타입 )의 모임 DLL은 동적 링크 라이브러리로,여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 라이브러리- MSDN(MicroSoft Developer Network) 문서 참고   DLL을 사용하면 뭐가 좋을까?1)일반 lib파일과 달리 메모리 관점에서 이점이 생긴다. =>여러 프로그램이 동시에 같은..

유니티/공통 2024.11.26

유니티 - Extension(확장 메서드)에 대해 알아보자

오늘은 Unity의 Extension(확장메서드)에 대해 알아보고자 합니다. 팀 프로젝트를 진행하면서 스치듯 들은 내용이 생각이 나서언제, 어떻게 사용하는 건지 한번 찾아서 정리해 봤습니다. 확장 메서드( Extension Methods )?Unity의 기존 클래스를 수정하지 않고 새로운 기능을 추가할 수 있는 프로그래밍 기법 원본 소스 코드 접근이 불가능한 클래스(예: Transform)에 기능 확장 시 유용하다.  사용법static 클래스에 정의하며 this 키워드로 구현 예시 코드 using UnityEngine;public static class TransformExtensions { // Transform 초기화 확장 메서드 public static void ResetTransform..

유니티/공통 2024.11.25

유니티 - Audio Mixer를 사용해보자 (+ 스크립트에서 불러올 때 주의할 점)

그동안 프로젝트를 진행하면서 사운드를 제대로 다룬 적이 없었는데어쩌다 보니 기회가 생겨 Audio Mixer를 처음 사용해 봤습니다. 사용하면서 겪었던 문제와 함께 간단하게 정리해 보고자 합니다. Audio Mixer는 프로젝트 창(화면 아래에 나오는 창, Assets 들어있는)에서우클릭하여 생성할 수도 있고, 윈도우를 통해서 생성 할 수도 있습니다.   생성하면 다음과 같은 아이콘의 Audio Mixer가 생깁니다.  내부 구조는 다음과 같습니다.  그동안 사운드를 다뤄보셨다면 Audio Sorce 컴포넌트를 연결하여 사용하셨을 겁니다. 내부를 자세히 보면 Output에 Audio Mixer Group이라고 되어 있는 부분 보이시나요.저 부분에 Audio Mixer를 연동하면 한 번에, 손쉽게 Audi..

유니티/공통 2024.11.20

유니티 - Input System에 대해 알아보자#3(Input System으로 UI 다루기 및 Path must be located in Assets/ folder (got: ' 주소 ' )UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) 에러 해결법)

오늘은 제목처럼 Input System으로 UI를 제어하는 방법과에러 해결법에 대해 작성하고자 합니다.  일단 이 에러는 Player Input 컴포넌트에서 Create Actions를 누르면 나오는 에러였습니다.  에러를 겪은 지는 꽤 되었었는데 그동안은 구글링해 봐도 방법이 안 나오고,직접 인풋 액션을 만들어 사용하는 데는 크게 문제가 없어서 넘어갔었습니다. 남들 딸깍 한 번이면 해결하는 걸 매번 일일이 만들어야 한다는 번거로움+ 처음엔 넣어야 할 내용이 뭔지 몰라서 짜증 났다 정도?  에러의 이유는 알고 있었습니다.Input System에서 절대경로를 사용하려고 해서 문제가 발생하는 거였습니다. 이래저래 방치하고 있다가 필요에 의해(UI와 같이 설명한 데는 이유가 있...)시도, 해결한 내용을 공유..

유니티/공통 2024.10.30

유니티 - Batching에 대해 알아보자.(feat. Draw call, Set Pass Call, 아틀라스)

오늘은 Batching에 대해 알아보고자 합니다.요즘 계속 유니티 관련해서 찾아봐서 그런가유튜브 알고리즘이 띄워주더군요. ㅋ 아틀라스를 사용하면서 몇 번 스치듯 들어보긴 했는데정확하게 몰라 한번 정리해 봤습니다. Batching?Draw Call과 여러 그래픽 요소들을 하나로 묶어 GPU에 전달하는 최적화 기법 Draw Call ? CPU는 게임 오브젝트 데이터를 읽고 처리하는 역할,GPU는 받은 데이터를 기반으로 실제 컨텐츠를 그리는 역할을 수행하는데, 이때  CPU가 GPU에게 3D 오브젝트를 그리라고 지시하는 명령을 Draw Call이라고 합니다. Set Pass Call ? Draw Call을 통해 따라오는 데이터를 커멘드 버퍼라고 하는데, 그 중 매테리얼, 쉐이더 등 그래픽 관련 데이터를 묶어놓..

유니티/공통 2024.10.25

유니티 - 에셋 번들에 대해 알아보자

오늘은 유니티에서 Resource 폴더 활용 글 작성 때 언급했던 것처럼에셋 번들에 대해 찾아봤고, 정리하는 시간을 가질까 합니다. 2024.10.18 - [유니티/공통] - 유니티 - Resources를 활용해 에셋을 로드해보자  에셋 번들여기서 말하는 에셋은 디스크의 실제 파일 / 아카이브 파일들을 말합니다. 간단히 말하면 유니티에서 Assets 폴더 아래 있는 모든 내용이이에 해당하는 내용이라 할 수 있겠네요.  이런 에셋들을 하나로 묶어서 관리하는 기법입니다.동작 원리 / 사용 방법 우측 하단을 보면 AssetBundle이라는 메뉴가 있습니다. 우클릭을 통해 New를 만들 수 있습니다.  A라는 폴더를 누른 채로 AssetBundle을 만들었습니다. 이름은 Test로 지정해 주었습니다만에셋번들의 ..

유니티/공통 2024.10.22

유니티 - 특정 스크립트가 적용되어 있는 오브젝트 찾는 법

오늘은 특정 스크립트가 어디에 적용되고 있는지간단하게 찾을 방법이 있어 소개하고자 합니다.  혼자 할 때는 몰랐는데 팀으로 협업하다 보니어떤 오브젝트에 어떤 스크립트가 붙어있는지 알기가 쉽지 않더라고요. 그래서 방법이 없을까 찾아보니,간단하게 해결할 수 있어 금방 시도해 보고 정리해 봤습니다.   유니티에서 원하는 스크립트를 우클릭한 다음 Find References In Scene을 눌러주면 됩니다.   그러면 씬에서 어떤 오브젝트가 해당 스크립트를 가졌는지 알려줍니다. 제가 선택한 스크립트는 해당 씬에서 가진 오브젝트가 없었나 봅니다. 다른 걸로 선택해 가지고 있는 상황을 보여드리면 다음과 같습니다.  ref : 라고 적힌 검색창 옆에 네모 아이콘?을 누르면 아래와 같이 확인 할 수도 있습니다. 정말..

유니티/공통 2024.10.21

유니티 - Resources를 활용해 에셋을 로드해보자

오늘은 Resources 폴더를 사용해동적으로 에셋을 로드하는 법에 대해 알아보고자 합니다. 구현 문제를 연습하다가 정적으로 할당하는 방법 외동적으로 시도를 해보라는 상황이 있었는데처음 떠올랐던 방법이 GetComponent, find 였습니다.  위 방식으로 어찌저찌 만들기는 했지만,다른 방법들은 없었을까 고민하던 중 이전에 Resource 폴더를 활용해 에셋을 불러왔던 방식이 떠올랐습니다. 당시에는 이런 게 있구나 하고 넘어갔었는데 지금 보니 다시 보이더군요.언제 사용하는지 문제점은 없는지 정리가 필요할 거 같아 작성해 봤습니다.  원리를 설명하자면  Resources라는 폴더를 만든 후,그 안에 할당해 주고 싶은 내용들을 넣어주고코드로 Resources 폴더에 접근,타입과 이름으로 해당 내용을 찾아..

유니티/공통 2024.10.18

유니티 - InputSystem에 대해 알아보자#2(내용 보충)

오늘은 InputSystem에 대해 더 자세히 알아보는 시간을 가지고자 합니다.지난번에 InputSystem에 대해 글을 작성하고 난 후, 추가로 알게 된 정보들이 몇 가지 더 있어서 정리하고자 합니다. 보충 버전이라고 할까요? 기존 블로그에 작성한 것에 추가하기에는 내용이 많아서 따로 글을 작성하게 되었습니다. 이전에 쓴 글 내용은 아래 링크를 참고하시면 될 것 같습니다.2024.10.15 - [유니티/공통] - 유니티 - InputSystem에 대해 알아보자#1(기본)  일단 본 글은 공식문서를 참조하여 작성되었습니다.유니티 버전에 따라서 InputSystem의 버전도 달라질 수 있습니다.참고하실 때 유니티 패키지 매니저에서 Input System의 버전을 확인하시고해당 버전에 맞는 문서를 체크하시면..

유니티/공통 2024.10.17