본문 바로가기

분류 전체보기252

[개발더미][Unity] NavMeshAgent에서 물리로 바꿀 때 버그 수정 (feat. 밑으로 추락하는 버그) navMesh를 구웠을 때, 실제 길보다 띄워져서 ai경로가 생기는 현상 발생 -> 멈추고 나서 아래로 추락하는 버그 생김 navMesh.updatePosition과 navMesh.updateRotation을 false로 바꿨는데도 움직이다가 멈추니깐 잘 안됐음. 그래서 꼼수로 updatePosition을 멈추는 순간에 false->true->false로 했더니 됨. 근데 왔다갔다 하는건 그대로임. -> ai맵을 구울때 생기는 살짝 뜬 공간(?)만큼 원래 맵을 올려주니 잘 되는듯..? -> updatePosition, updateRotation, isStopped, velocity를 조절하면 됨.(아래 코드 참고) 2024. 1. 5.
[Unity] 헷갈리는 개념, Collider - Layer Overrides(Include Layers, Exclude Layers) 유니티에서 콜라이더의 속성 중 Layer Overrides에 대해 알아보자! 아래 그림과 같은 대부분의 기본 콜라이더에 포함되어있는 Layer Overrides 속성을 이용해 레이어를 이용한 확장기능을 이용할 수 있다. 1. Layer Override Priority : 자신의 콜라이더와 겹치는 충돌이 발생할 때 어떤 것을 우선할지를 정해주는 우선순위이다. : 숫자가 낮을수록 우선순위가 높다. 2. Include Layers : 충돌행렬에서 충돌이 안되게 설정한 것들을 이 물체에만 충돌체크가 되도록 해준다. 3. Exclude Layers : 설정한 레이어로 된 콜라이더와의 접촉은 무시한다. ※ 예시 1. 아래 그림에서 가운데 두 캡슐은 각각 큰 원형의 콜라이더를 가지고 있다.(Rigidbody도 가지고.. 2024. 1. 5.
[C#/Unity][디자인패턴] 방문자 패턴(Visitor Pattern) 1. 방문자 패턴이란? - 알고리즘을 객체 구조에서 분리시키는 패턴. - 데이터 구조와 데이터 처리를 분리하여, 데이터 구조 내부에 방문자 클래스를 만들어 각각을 처리한다. - 방문자와 방문 공간을 분리하여, 방문 공간이 방문자를 맞이하고, 이후에 대한 행동은 방문자에게 위임하는 패턴. 2. 방문자 패턴을 사용하는 경우 - 자료구조(데이터)와 자료구조를 처리하는 로직(알고리즘)을 분리해야 할 경우 - 데이터 구조보다 알고리즘이 더 자주 바뀌는 경우 - 복잡한 객제 구조(ex. 객체 트리)의 모든 요소에 대해 작업을 수행해야 하는 경우 3. 방문자 패턴의 장점 - 구조를 수정하지 않고, 새로운 동작을 기존의 객체 구조에 추가할 수 있다. - 작업 대상(방문 공간)과 작업 항목(방문 공간을 가지고 하는 일).. 2023. 12. 31.
[C#/Unity][디자인패턴] 책임 연쇄 패턴(Chain of Responsibility Pattern) 1. 책임 연쇄 패턴이란? - 사용자의 요청을 처리함에 있어, 연쇄(Chain)적으로 연결되어있는 처리 객체(Handler)들을 이용하는 패턴. - 클라이언트로부터의 요청을 처리할 수 있는 처리 객체를 집합(Chain)으로 만들어 부여함으로 결합을 느슨하게 하기 위해 만들어진 디자인 패턴. - 일반적으로 요청을 처리할 수 있는 객체를 찾을 때까지 집합 안에서 요청을 전달한다. - 각각의 인스턴스의 책임들이 체인처럼 연쇄되어 있다는 뜻이다. - 요청을 보내는 쪽과 처리하는 쪽을 분리시키고, 요청을 보내는 쪽에서 해당 요청을 처리하는 핸들러가 어떤 구체적인 타입인지에 상관없이 디커플링된 상태에서 요청을 처리할 수 있게끔 해주는 패턴. - 클라이언트의 요청에 대한 세세한 처리를 하나의 객체가 몽땅 하는 것이 .. 2023. 12. 29.
[C#/Unity][디자인패턴] 템플릿 메서드 패턴(Template Method Pattern) 1. 템플릿 메서드 패턴이란? - 기능의 뼈대(템플릿)와 실제 구현을 분리하는 패턴. - 알고리즘의 구조를 메서드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경헚이 알고리즘을 재정의하는 패턴. - 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. - 변하지 않는 기능을 슈퍼클래스에 만들어두고, 자주 변경되면 확장할 기능은 서브클래스에 만든다. 2. 템플릿 메서드 패턴을 사용하는 경우 - 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메서드이지만 여러곳에서 다른 형태로 사용이 필요한 경우 사용. - 알고리즘의 특정 단계들만 확장할 수 있도록 하고 싶지만 알고리즘의 구조는 확장하지 못하도록 하고 싶은 경우 3. 템플릿 메서드 패턴의 장점 - 중복을 줄이고, 코드의 재사용성을.. 2023. 12. 28.
[C#/Unity][디자인패턴] 전략 패턴(Strategy Pattern) 1. 전략 패턴이란? - 정책 패턴(Policy Pattern)이라고도 불리며 특정 알고리즘을 별도로 분리하여 설계하는 방법을 말함. - 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 사용할 수 있게 해줌. - 실행 중에 알고리즘(전략)을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴. - 객체의 행위를 변경하고 싶을 때, 직접 수정하지 않고 전략이라 불리는 캡슐화된 알고리즘을 변경. - 특정한 계열의 알고리즘들을 정의하고, 각 알고리즘을 캡슐화하며, 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하도록 만든다. - 객체들이 할 수 있는 각각의 행위에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여 객체의 행위를 동적으로 바꾸.. 2023. 12. 28.
[C#/Unity][디자인패턴] 상태 패턴(State Pattern) 1. 상태 패턴이란? - 객체가 상태에 따라 행위를 다르게 할 때, 직접 상태를 체크하여 상태에 따른 행위를 호출하는 것이 아니라 상태를 객체화하여 필요에 따라 다르게 행동하도록 위임하는 디자인 패턴. - 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌, 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴. - 객체의 특정 상태를 클래스로 선언하고, 클래스에서는 해당 상태에서 할 수 있는 행위들을 메서드로 정의한다. - 상태란, 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다. 2. 상태 패턴을 사용하는 경우 - 상태 전이를 위한 로직이 지나치게 복잡한 경우 - 현재 상태에 따라 다르게 행동하는 객체가 있는 경우 - 상태들의 수가 많고, 상태별로 코드가 자주 변경되는 경우 3. 상태 패.. 2023. 12. 27.
[C#/Unity][디자인패턴] 옵저버 패턴(Observer Pattern) 1. 옵저버 패턴이란? - 하나의 관찰 대상(객체)를 여러 개의 관찰자(옵저버)들이 관찰하고(일대다 구조), 객체의 상태 변화시 객체가 직접 옵저버들에게 상태 변화를 통지하고, 옵저버들은 해당 통지를 받는 구독 메커니즘을 가짐. - 옵저버(관찰자)들이 관찰하고 있는 대상자의 상태 변화가 있을 때마다, 대상자는 목록의 각 관찰자들에게 직접 알리고 관찰자들은 알림을 받아 조치를 취하는 행동 패턴. - 객체의 상태 변화를 관찰하는 관찰자(옵저버)들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴. - public/subscribe (발행/구독) 모델로도 알려져 있음. - 관찰자들은 수동적으로 객체에게 정보를 전달 받기만을 기다린.. 2023. 12. 27.
[개발더미][Unity] 유니티 GPU 버그 - D3D11 swapchain~ 개발 중 갑자기 아래와 같은 문구가 뜨면서 유니티가 튕겼다. 그래서 이리저리 서치해서 해결방안을 찾아냈다! 💡해결방안 디스플레이 설정 > 그래픽 > 유니티 아이콘 클릭 > 옵션 클릭 > Windows가 결정하도록 허용 -> 고성능으로 변경 cf) 이 방법으로도 안 될 경우 아래 사이트를 참조하길 바란다. Bug - Failed to present D3D11 swapchain due to device reset/removed. List of Solutions For reference, the bug report is IN-41214. So this unrecoverable error can happen for many but essentially your graphic card resets because .. 2023. 12. 26.
[자기계발][글쓰기][책] 원씽(The One Thing) 후기 클릭해주셔서 감사합니다 :) 이 글은 개인적으로 읽은 책을 기억에 남기기 위한 독서 리뷰입니다. 리뷰할 책은 [게리 켈러·제이 파파산]님의 [원씽(The One Thing)]입니다. 평점 ⭐⭐⭐⭐⭐ 5/5 (주관적인 기준입니다.) 책 정보 읽게 된 계기 이 책은 워낙 유명하기도 하고 '단 한 가지에 집중하는 것' 이라는 이 책의 모토가 지금 내 상황에 필요한 것이라는 생각이 되어 읽게 되었다. 나는 최근에 자기계발에 대한 관심을 갖게 되었고 유튜브나 책을 통해 이것저것 알아보면서 내가 담기에는 너무 방대한 정보들이 나에게 주입(?)되면서 어떤 것에 집중해야하는지에 대한 고민이 생겼고, 이를 해결하고자 이 책을 펴게 되었다. 인상 깊었던 부분 1. 초점 찾기 - 탁월한 성과는 자신의 초점을 얼마나 좁힐 수.. 2023. 12. 25.
[C#/Unity][디자인패턴] 메멘토 패턴(Memento Pattern) 1. 메멘토 패턴이란? - 객체를 이전 상태로 되돌릴 수 있는 기능을 제공하는 패턴. - 객체의 상태 정보를 저장하고 사용자의 필요에 의해 원하는 시점의 데이터를 복원할 수 있는 패턴. - 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장하는 방법. 2. 메멘토 패턴을 사용하는 경우 - 어떤 객체의 상태를 변경하고, 이 변경 내용을 이후에 취소하거나 이전 상태로 복원하려고 할 때 사용 - 객체의 field, getter, setter들을 직접 접근하는 것이 해당 객체의 캡슐화를 위반할 때 사용 3. 메멘토 패턴의 장점 - 객체의 모든 정보를 외부로 노출시키지 않고 캡슐화를 지킬 수 있다. - 캡슐화를 위반하지 않고 객체의 상태 스냅샷들을 생성할 수 있다. - 코드를 단순화 시킬 수 있다. 4. 메멘토 패.. 2023. 12. 21.
[C#/Unity][디자인패턴] 중재자 패턴(Mediator Pattern) 1. 중재자 패턴이란? - 객체 간의 직접 통신을 제한하고 중재자 객체를 통해서만 협력하도록 하는 패턴. - 소프트웨어 공학에서 어떻게 객체들의 집합이 상호작용하는지를 함축해놓은 객체를 정의 - 객체간의 상호작용을 캡슐화하는 디자인 패턴 - 중재자라는 객체 안에서 서로 다른 객체들을 캡슐화하여 객체들이 더 이상 직접적으로 상호작용하지 않고 중재자를 통해서만 커뮤니케이션하도록 함. - 객체 간의 혼란스러운 의존 관계들을 줄일 수 있는 패턴 2. 중재자 패턴을 사용하는 경우 - 객체 간의 많은 의존관계를 가지거나 상호작용이 복잡해질 때 사용. - 일부 클래스들이 다른 클래스들과 단단하게 결합하여 변경하기 어려울 대 사용. - 타 컴포넌트들에 너무 의존하여 다른 프로그램에서 컴포넌트를 재사용할 수 없는 경우 .. 2023. 12. 20.