2024/11 22

유니티 에러 : error cs 1061 '스크립트 명' does not contain a definition for '변수명' and no accessible extension method '변수명' accepting a first argument of type '스크립트 명' could be found (are you missing a using directive or an assembly reference?)

오늘은 프로젝트를 진행하면서 겪은 에러 해결 과정을 공유하고자 합니다. 프로젝트가 본격적으로 논의가 되면서에셋을 추가하고 나니 다음과 같은 에러가 발생했습니다.    에러가 난 코드를 아무리 봐도 문제가 없고,여러 에셋을 한 번에 추가하는 과정에서 충돌이 났나 싶어서지우고 다시 다운로드 해봐도 같은 현상이 발생했었습니다. error CS1061로 검색을 해보니 가장 상단에 뜨는 MS 공식 문서에서존재하지 않는 메서드를 호출하거나 클래스 멤버에 액세스하려고 할 때발생하는 문제라고 설명을 하더군요.  혹시나 에셋이 문제인 건가 싶어서 에셋 개발자 깃허브 주소 Issues를 뒤져보니 똑같은 현상을 겪고 있는 글을 찾았는데 해결 방법은 안 적혀 있었습니다.;; 당황했지만 계속 매달린 끝에 결국엔 해결했습니다. ..

유니티 2024.11.29

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

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

유니티/공통 2024.11.28

게임 그래픽스에 대해 알아보자 #1 (렌더링 파이프 라인)

오늘은 게임 그래픽스와 관련한 내용을 정리 해보고자 합니다.면접에서 가끔 그래픽스와 관련한 질문들도 한다는 이야기를 듣고 정리 해보면 좋겠다는 생각에 이렇게 글을 작성해 봤습니다. 사실 그동안에도 꾸준히 그래픽스와 관련한 용어들을 마주하긴 했었습니다. 렌더 파이프라인이라던지 드로우 콜이라던지 2024.10.24 - [유니티/3D] - 유니티 3D - 머티리얼(Material) 분홍색 해결 방법 (feat : URP )2024.10.25 - [유니티/공통] - 유니티 - Batching에 대해 알아보자.(feat. Draw call, Set Pass Call, 아틀라스) 이외에도 학습은 했지만, 아직 블로그에 작성(정리) 하지 않은 내용까지. 그중에서 오늘은 렌더링 파이프라인에 대해 좀 더 자세하게 다뤄보..

카테고리 없음 2024.11.27

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

디자인 패턴 - 커맨드 패턴(Command pattern)에 대해 알아보자

2024.11.07 - [디자인 패턴] - 디자인 패턴 - MVC(Model-View-Controller)패턴에 대해 알아보자(+ MVP, MVVM)  오늘은 커맨드 패턴에 대해 알아보고자 합니다. 팀 프로젝트를 마무리하면서 팀원분의 코드를 보게 되었는데퀵 슬롯을 Command 패턴을 활용하여 구현했다는 내용을 듣고 오랜만에 디자인 패턴으로 글을 작성하게 되었습니다. Command 패턴각각의 요청을 캡슐화하여 명령을 객체화하는 디자인 패턴입니다. 명령을 보내는 객체와 받는 객체 간의 결합도를 낮출 수 있고,명령을 추가할 때 새로운 Command 클래스를 추가하면코드 수정 없이 기능 추가가 가능하다는 장점이 있습니다.  예시 코드 더보기using UnityEngine;using System.Collecti..

디자인 패턴 2024.11.22

유니티 - 디버깅을 해보자 (feat : 유니티 Debug, IDE 중단점 활용 법)

오늘은 디버깅하는 법에 대해 알아보고자 합니다. 그동안은 프로젝트를 진행하면서Debug.Log를 통해서 일일이 확인해 가며 완성했었습니다. 이 방식으로는 한계가 있었고 캠프 마지막 프로젝트에 들어가기 전제대로 디버깅하는 법을 익히고, 정리해 보고자 글을 작성하게 되었습니다. (사실 늦은 감도 있긴 합니다만;; 원래 늦었다고 할 때가 가장 빠른 거 아니겠습니까;;;) 유니티의 Debug기능 매번 Debug.Log("");만 사용해 봐서 그 외에도 대표적으로 자주 사용되는 몇 가지 기능들을 가져와 사용해 봤습니다.      Debug.Log를 사용할 때 몇 가지 주의할 점이 있는데Debug.Log를 까먹고 지우지 않은 채 빌드하면그대로 노출되어 해킹의 위험이 될 수 있습니다.  이뿐만 아니라 성능 저하의 원..

카테고리 없음 2024.11.21

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

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

유니티/공통 2024.11.20

유니티 - 비동기 프로그래밍에 대해 알아보자. #4 (Awaitable)

2024.11.18 - [분류 전체보기] - 유니티 - 비동기 프로그래밍에 대해 알아보자. #3 (UniTask)  오늘은 awaitable을 정리하는 시간을 가지고자 합니다.  AwaitableAwaitable 타입은 유니티에서 Task를 대체하여 비동기 작업을 표현하는 타입으로, 유니티가 추적할 수 있는 타입입니다. Task와 비교하여 유니티 개발 환경에 최적화되어 설계되었다고 합니다.  특징내부 풀링 시스템으로 메모리 할당 최소화=> async 메서드를 실행할 때마다 Task 타입을 위한 메모리 할당이 발생하는 문제를 해결 =>  동일 인스턴스 중복 await이 불가능하다. GC 압박감소   주요 메서드  NextFrameAsync(): 다음 프레임 대기WaitForSecondsAsync(): 시간..

카테고리 없음 2024.11.19

유니티 - 비동기 프로그래밍에 대해 알아보자. #3 (UniTask)

2024.11.14 - [분류 전체보기] - 비동기 프로그래밍에 대해 알아보자. #2 (Task) 오늘은 지난 시간에 이어 UniTask에 대해 정리해 보고자 합니다. UniTask UniTask는 Unity 환경에서비동기 프로그래밍을 더 효율적으로 할 수 있게 해주는 라이브러리입니다. UniTask는 외부 라이브러리라설치하기 위해선 몇 가지 과정을 거쳐야 합니다. 설치 방법 https://github.com/Cysharp/UniTask 설치하는 방법은 두 가지가 있습니다. 1)사이트에 들어가서 우측에 Releases라 적힌 부분을 클릭하고직접 다운로드 후 유니티에 추가하는 방법   2)아래 내용을 쭉 보다 보면 UPM Packager라는 부분이 나오는데 여기서 제공하는 URL 주소를 유니티 패키지 매니..

카테고리 없음 2024.11.18