자, 금일 부터는 디자인 패턴에 대해서 설명해 보자.다만, 디자인 패턴은 형식이 정해진 것이 아니라, 개발의 편의성과 효율 등을 높이기 위한 일종의 '경향'이라는 것을 주의하도록 하자. '이렇게 만들면 좋다'지, '이렇게 만들어야 한다'가 아니라는 것이다.그런 만큼, 같은 디자인 패턴이라도 구현 방법이 한 종류가 아니라 매우 다양하다.그러니, 본문은 참고용으로만 보고, 실제로는 본인이 고심하여 작성하여 보자.[참고 URL - https://refactoring.guru/ko]디자인 패턴 - 2 : https://lsu0503.tistory.com/123 Today I Learned - Day 61 [디자인 패턴 - 2]이번에도 찾아온 디자인 패턴 정리 시간이다.금일에는 '생성'과 관련된 패턴을 정리해볼까..
유니티에서 UI를 그릴 때에는 Canvas라고 하는 컴포넌트를 사용한다.UI를 그린다는 시점에서 당연하지만, 이를 다루는 것은 유니티의 기초라고도 할 수 있다.다만, 이 Canvas의 특성을 생각하면 그리 간단한 기능인 것은 아니다.그러니 한번 살펴보자.오늘은 다소 간단할 것이다.Canvas란?Canvas는 '화면'에 오브젝트를 그릴 수 있도록 구성된 컴포넌트로, CanvasScaler와 함께 사용해서 '원하는 해상도에 맞춰서' 화면을 구성할 수 있다.이 설명에서 보면 어느 정도 예측할 수 있겠지만, Canvas의 역할은 하위 오브젝트를 필드가 아닌 카메라를 기준으로 그리게 해 주는 역할 만을 하고 해상도에 맞춰서 크기를 조절하는 것은 CanvasScaler의 역할이다.여기에 기본 Canvas에는 Gra..
※ 금일은 간단한 내용으로 작성할 예정입니다. 일전에 물체 판별을 정리하면서 레이어마스크에 대해서 설명한 적이 있다.[참고 URL: https://lsu0503.tistory.com/115] 해당 문서에서는 LayerMask를 조건문에서 어떻게 사용하는지만 다뤘었기에 :LayerMask는 인스펙터에서 설정하는 것을 기준으로 설명했었는데, 프로젝트를 진행하다 보면 LayerMask를 인스펙터가 아닌 스크립트 상에서 수정해야 하는 일이 발생한다.그런 경우에 어떻게 사용해야 하는 지를 정리해 보자.LayerMask는 32bit 자료형이다.Layer는 최대 32개 까지 설정이 가능하며, Layer 자체는 자연수로 구성되어 저장된다.그리고 LayerMask는 이 32개 Layer에 대한 판정 여부를 지정하는 32..
인터넷을 뒤져보면 별의 별 방식으로 가독성을 무너뜨려놓은 개그용 코드를 볼 수 있다.[형... 으로만 작성한 코드라거나... 세미콜론 등을 위에서 define 해 놓고 생략시킨 코드라거나...]물론, 개그용 코드인 만큼 반응 자체가 격하지는 않지만, 전체적으로 '명치 한 대 강하게 때리고 싶다'는 의견이 주를 이루는 걸 볼 수 있다.그리고 실제로도 저런 코드를 보게 된다면 보안용이 아닌 이상 명치 한 방으로는 끝나지 않을(...) 격한 환영을 받게될것이기도 하다. 그럼 반대로 생각해 보자.'가독성이 좋은 코드란 무엇일까?'오늘의 주제는 바로 이것이다.일전에 스파게티 코드에 대해서 정리했던 적이 있다.[TIL - Day 4 [스파게티 코드에 대해서] (URL: https://lsu0503.tistory.c..
※ 금일은 간단한 내용으로 작성합니다. 유니티로 작업하다보면 이래저래 Destroy를 사용하는 경우가 종종 발생한다.다만, Destroy는 잘못 쓰면 콘솔창이 빨갛게 물드는 호러 체험(?)을 할 수도 있다.오늘은 이것에 대해서 정리해 볼까 한다.솔직히는 Destroy는 기본적인 기능이라서 이걸 모르긴 힘들지 않나 싶긴 한데...일단 깜빡하기 쉬워서 정리해 보고자 한다.Destroy()의 2가지 용법Destroy는 2가지 사용법이 있다.Destroy(GameObject)Destroy(Component)둘 다 괄호 안의 대상을 파괴한다는 점에서 사실상 용도는 같다고 볼 수 있다.다만, '대상 만 파괴한다'는 점 때문에 이런저런 문제의 근원지가 되기가 쉬운 편.물론, 어지간하면 알고리즘을 잘못 짜서 그런 것이..
※금일은 간단한내용으로 작성될 예정이다.유니티로 작업하다 보면 '물체를 판별'해야 하는 경우가 매우 빈번하게 발생한다.유니티에는 이러한 '물체를 판별'할 수 있는 기능이 몇 개 있는데, 이에 대해서 알아보자.Layer [레이어]기본적으로 사용되는 물체 판별용 기능.최대 32개(이 중 고정값 5개)의 레이어를 설정하여 인스턴스에 부여한다.이를 통해서 설정에서 아예 충돌하지 않게끔 구성도 가능하고, 다양한 종류의 대상을 한 번에 판별할 수도 있다.거기다가 bit값으로 판별하기 때문에 판별 속도도 빠른 편.실제로 다양한 기능에서 이 Layer를 기준으로 대상을 판별하도록 구성되어 있다.이러한 특성 상, 유니티를 다루는 이상 '반드시' 익숙해져야 하는 기능.그럼, 판별 방법을 알아보자. LayerMaskbit값..

이전에, AI Navigation에 대해서 정리한 적이 있다. [알고 보니, 정리를 안했었다...;;][참고 URL: https://lsu0503.tistory.com/140]nav Mesh라는 기능을 이용해서 각 영역에 대한 가중치를 설정했다면 목적지로 향하는 최적 경로를 찾아내어 오브젝트를 이동시키는 기능으로, 복잡한 지형이나 벽 등을 구현할 때에 유용한 패키지인데...이 패키지는 3D 환경 만 지원한다.즉, 2D 환경에서는 다른 방법을 찾아야 한다는 것이다. 그렇다면, 2D게임을 제작할 때에는 최적 경로 탐색 알고리즘을 직접 작성해야 하는 것일까.물론, 그렇게 하는 방법도 있다. 최적 경로 탐색 알고리즘은 이젠 검색 만 해도 찾아볼 수 있는 실정이고, 타일 맵으로 작업되는 경우가 많은 2D 환경에서..
객체 지향으로 코딩을 하다 보면 상당히 자주 사용하게 되는 기능이 '상속'이다.인터페이스로 구현되는 의사 다중 상속 관계가 아니라, 부모 클래스에게서 필드와 메서드를 상속받는 그것이 맞다.상속의 강점은 '같은 기능을 굳이 여러 번 작성할 필요가 없다'라는 점으로, 의외로 2~3단계로 상속받게 되는 경우는 흔하다. 그렇게 되면 슬슬 활발하게 활용하게 되는 것이 'abstract'이다.abstract에 대해서는 톺아보기로 정리를 하긴 했으나, 사실 너무나도 간단하게 정리하고 넘어간 것이 아닌가 싶다.그러니까, 한번 더 정리해 보자. 'abstract의 활용도'에 대해서.abstract?abstract는 클래스와 그 내부의 함수를 추상적으로 선언할 때 사용하는 형식 지정자다.실질적으로는 '자식 클래스들 간에 ..
일단 본 캠프는 개발자 캠프라서 기획 관련 요소를 다루는 과정이 아닌 지라, 어지간 하면 기획 관련 내용을 작성하지는 않으려고 했지만...아무래도 오늘이 최종 프로젝트 첫 날인 데다가 본인이 기획 담당이었던 지라, 금일 본인이 한 것은 기획 정리 뿐...그리고 금일 특강으로 기획 관련 내용을 진행했었기에, 본인이 게임을 기획할 때 쓰는 방법을 정리해 볼 까 한다.기획을 하면서 가장 많이 겪는 난점이 무엇일까.기획을 해 본 사람이라면 한 번 쯤은 '표류하고 있다'는 느낌을 받았을 것이다.그렇다. 기획을 할 때에 가장 난감한 것은 기획이 진행됨에 따라서 점점 방향을 잃어가기 쉽상이라는 점이다.그렇다면 이를 예방하기 위해서는 무엇을 해야할까.이것을 고민하는 것이 기획에 있어서의 첫 걸음이다.게임의 주제, 'T..
유니티의 강점이라고 한다면 무엇이 있을까. 사실 다양한 내용이 나올 수 있다고 생각하지만, 이번에는 그 중에서 인스펙터를 지목 해 볼까 한다.물론, 다른 게임 제작 툴이라고 해서 유니티의 인스펙터 같은 내부 변수 편집 도구가 없는 것은 아니지만, 유니티의 인스펙터는 다른 툴들의 그것을 압도하는 '직관성'이 매우 편리하게 다가오는 편이다. 실제로 최근 들어서 '코딩을 하지 않는 게임 제작 툴'이 꽤나 많이 나온 상황인데, 이러한 요소들도 다들 아이콘에 파묻혀서 우왕좌왕 하기 딱 좋은 경우가 대다수다.[본인은 이렇지 않은 경우를 닌텐도의 '차근 차근 게임 코딩' 하나 밖에 보질 못했다.] 물론, 쉽기로는 유명한 RPGMaker도 게임 제작 툴이기는 하나, 이쪽은 특정 형태가 아니면 만들기가 제법 껄끄러운 데..