자, 어제 정리한 Activator.CreateInstance()에서 살짝 눈을 돌려 보자.var typeValue = Type.GetType(typeName); // typeName을 타입으로 변경/* 인자 없이 생성 */var typeClass = Activator.CreateInstance(typeValue);var typeClass = Activator.CreateInstance(typeValue, Object[]); // 인자 전달하며 생성자, 어제는 여기서 아래쪽을 설명했었다. 그러면 이번에는 위쪽을 보자. Type.GetType(typeName);이라는 문구가 보일 것이다.이는 typeName에 해당하는 타입, 즉 변수형을 반환하는 함수다.여기서 처음 보는 사람도 있을 거고, 이에 대한 지식..
프로그래밍을 하다 보면 '기능을 모르면 아예 연상도 못하는' 경우가 더러 있다. 만약에 event를 몰랐다고 가정 해 보자.코딩 자체가 클래스 간 자료 교환을 함수 호출으로 하는 것이 기초적인 방법인 탓에 event를 안쓰고도 대부분의 기능은 작성이 가능하다. 반대로 말하면, '별 다른 요소 없이, event를 자연스럽게 의식하는 것은 어렵다'라고도 말할 수 있을 것이다.[물론, event 자체는 워낙 중요한 시스템이다 보니, 이런저런 곳에서 많이 나와서 이럴 일이 그다지 없긴 하다.] 즉, 기존에 가능한 부분을 더욱 간단하게, 명료하게 정리할 수 있는 부분은 정말로 알아차리기 어렵다.오늘은 본인 기준으로는 그러했던 기능 중 하나를 설명하고자 한다.'한 변수에 Enum값에 따라 다른 자식 클래스를 할당해..
이번에도 찾아온 디자인 패턴 정리 시간이다.금일에는 '생성'과 관련된 패턴을 정리해볼까 한다.[참고 URL: https://refactoring.guru/ko]디자인 패턴 - 1 : https://lsu0503.tistory.com/120 Today I Learned - Day 59 [디자인 패턴 - 1]자, 금일 부터는 디자인 패턴에 대해서 설명해 보자.다만, 디자인 패턴은 형식이 정해진 것이 아니라, 개발의 편의성과 효율 등을 높이기 위한 일종의 '경향'이라는 것을 주의하도록 하자. '이렇lsu0503.tistory.com빌더[참고 URL : https://refactoring.guru/ko/design-patterns/builder]빌더라고 하면 개발자 입장에서는 코드를 Build하는 그것을 떠올릴..
저번 주 부터 최종 프로젝트에 돌입하였다.사실 주의 마무리로 적는다는 개념으로 작성하기에는 다소 많이 늦은 감이 있으나, 일단 WIL을 프로젝트 경과 정리용으로 작성하고 있는 터라, 앞으로도 기간은 벗어났어도 당 주에 작업한 내용에 대해서 서술하는 방식으로 작성하게 될 듯 하다.솔직히는 담당한 영역에 집중하다 보면 본 게시글을 작성할 시간이 녹록치 않은 것이 사실이기도 한 지라...[근데 이러면 WIL이 맞느냐는 의문이 든다는 점은 뒤로 넘기도록 하자... 이 때 까지 계속 이렇게 해온 터라 지금 바꾸기도 난감하다.] 더 이상 주 단위로 작성하기가 힘든 것으로 판단, 최종 프로젝트 별개의 카테고리로 분리하였다.다른 것이 아니라, 최종 프로젝트의 작업량 덕분에 TIL을 쓰면서 WIL까지 작성할 여유가 도저..
※ 금일의 TIL은 다소 간단하게 작성할 예정이다. Unity를 다루는 사람이라면 다들 GetComponent가 무거운 연산이라는 것은 익히 알고 있을 것이다.그럼에도 이를 안 쓸 수가 없는 영역이라는 것도 알고 있을 것이다.그렇다면 이에 의해서 발생하는 문제점은 무엇이고, 어떻게 대처해야 하는 가.오늘을 이에 대해서 정리할 예정이다.GetComponent, TryGetComponent, GetComponentInChilren게임오브젝트에서 컴포넌를 가져오는 함수들이다.각각 다음 동작을 수행한다.GetComponent() : 해당 GameObject에서 컴포넌트를 가져오는 함수. 없을 경우 null값이 반환된다.TryGetComponent(out T): 해당 GameObject에서 컴포넌트를 가져와 '보..
자, 금일 부터는 디자인 패턴에 대해서 설명해 보자.다만, 디자인 패턴은 형식이 정해진 것이 아니라, 개발의 편의성과 효율 등을 높이기 위한 일종의 '경향'이라는 것을 주의하도록 하자. '이렇게 만들면 좋다'지, '이렇게 만들어야 한다'가 아니라는 것이다.그런 만큼, 같은 디자인 패턴이라도 구현 방법이 한 종류가 아니라 매우 다양하다.그러니, 본문은 참고용으로만 보고, 실제로는 본인이 고심하여 작성하여 보자.[참고 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)둘 다 괄호 안의 대상을 파괴한다는 점에서 사실상 용도는 같다고 볼 수 있다.다만, '대상 만 파괴한다'는 점 때문에 이런저런 문제의 근원지가 되기가 쉬운 편.물론, 어지간하면 알고리즘을 잘못 짜서 그런 것이..