Decorator pattern은 객체의 기능을 동적으로 확장하고자 할 때, 또는 상속받을 클래스가 상속이 불가능할 때 사용되는 디자인 패턴이다. 게임의 예를 들면 맵을 돌아다니다가 일시적으로 공격력이 강화되거나, 속도가 빨라지거나, 방어력이 강화되는 아이템을 먹는 경우를 생각해 볼 수 있다.이런 효과들은 중첩되어 적용도 가능하다. 또 익숙한 예로는 text editor를 생각해볼 수 있다. 볼드, 이탤릭, 칼라변경등 기본 텍스트를 꾸며주는 기능들이…
[카테고리:] 유니티
유니티 개발 내용
Design Pattern: Composite
유사한 아이템들을 트리구조로 구성해야할 때, 컨테이너 노드와 컴포넌트노드들의 인터페이스를 통일시켜준다. 이렇게하면, 컨테이너와 컴포넌트를 구별할 필요가 없어져서 컨테이너 안에 다른 컨테이너도 포함가능해진다. 또한 인터페이스에 정의된 기능을 실행시, 트리구조상의 하위 전체에 쉽게 실행할 수 있다. 이해가 쉬운 실제 예들이 아주 많다. 디렉토리 파일구조를 생각해보면, 디렉토리안에 다른 디렉토리가 올 수 있고, rename, delete등의 기능들을 인터페이스로 정의하면 된다는걸 알…
Design Pattern: Factory method
Factory Method Pattern 객체 생성을 동적으로 해야해서 어떤 객체를 생성할지 알 수 없을 때, 객체 생성방법을 알고 있는 factory method를 따로 만들고 생성을 이 메소드에 위임해서 동적으로 생성해 사용하는 방법이다. 예를 들면, 여러 포맷을 지원하는 문서 편집기에서 새로운 문서를 생성할 때 문서 생성을 담당하는게 factory method가 된다. 그림판에서 삼각형, 사각형, 동그라미등의 도형을 생성하는 경우, 역시…
Unity: 매우 혼란스러운 Vector3 사용에 대한 이해
unity를 써보면서 기본적이면서도 당황스러운 녀석이 Vector3였다. transform.position.set()을 해도 먹히지가 않네? update()안에서 이렇게 new를 남발해도 되나? 같은 것들. 다른 언어들을 다루다보면, Vector는 당연히 객체로 다룬다. 거기다가 new까지 쓰고 있는걸? 당연하게 머리속에 있던 내용들이 혼란스러워진다. 답은 마음에 안들겠지만 의외로 간단한데, C#에서 Vector는 구조체 타입이다. 그리고 이 구조체 타입은 기본 타입인 int, float, char, enum등과 같이 value type이라서…
Unity: C# 문법에서 익숙하지 않은 부분만 모아보기
C#을 한 번 훑어보면서 익숙하지 않거나 다른언어와 헷갈릴만한 부분만 추려봤다. 이런게 있다고 언급하는 선이기 때문에, 모든 정보를 얻으려 하지말고 관련 키워드를 이용해 검색해보기 바란다. foreach 대부분 다 C/C++하고 같은데, 다른 언어에서 익숙한 foreach문이 추가로 있다. 추가로 있다고 하기에 좀 민망하긴 한데, C++ 11에도 추가되어 지원하고 있는 문법이다. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/foreach-in 참조. format string Kotlin, Python에서 자주쓰던 format…