본문 바로가기

전체 글58

RequireComponent 속성 RequireComponent 속성이 포함된 스크립트가 오브젝트의 컴포넌트로 추가될 때 RequireComponent에 선언된 컴퓨넌트가 자동으로 붙게되며 이 때 추가된 컴포넌트는 강제로 삭제할 수가 없다.Ex)[RequireComponent (typeof(Rigidbody2D))]public class Bullet : MonoBehaviour{} -> Bullet 스크립트를 어떠한 GameObject에 컴포넌트로 추가할 시 Rigidbody2D 컴포넌트가 해당 오브젝트에 자동으로 추가된다. 2015. 9. 14.
유니티에서 2D Picking 구현하기 유니티 5.0 버전에서는 2D 상의 Picking에서는 Physics.Raycast가 아닌 Physics2D.Raycast를 사용한다.또 이런 Picking을 하기위해서는 2D오브젝트가 2D Collider를 가지고 있어야 한다. if(Input.GetMouseButtonDown(0)){Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);//화면의 좌표계를 월드 좌표계로 전환해주는 함수(ex. 100 x 100 해상도의 경우 가운데 좌표가 스크린좌표로 나타내면 50,50 이지만 월드좌표는 0,0 이다.)RaycastHit2D hit = Physics2D.Raycast(pos, Vector2.zero);if(hit.collider != nu.. 2015. 9. 13.
함수호출규약 일단 32비트 기반 함수 호출규약과 64비트 기반 함수 호출 규악은 다르기 때문에 32비트 기반 함수 호출규악에 대해 먼저 알아보겠다. - 32 bit1. _cdeclC/C++의 32비트 기반 디폴트 함수 호출규약은 _cdecl이다. 반환 시에는 함수를 호출한 Caller가 주체가 되어 스택 프레임을 반환하도록 정의되어있다. 2. _stdcall스택 프레임을 반환하는 주체가 호출된 함수이다.3. _fastcall함수 호출을 빠르게 처리하기위한 호출규약이다. 따라서 인자를 저장할 때 (ecx, edx)레지스터를 사용한다. - 64 bit운영체제에 따라서 호출 규약이 나뉘게 된다.Windows 기반에서는 총 8개의 레지스터를 활용해서 전달되는 인자를 저장하지만 실제로는 4개의 인자만 저장된다.Linux나 B.. 2015. 9. 8.
2. 브릿지(Bridge) 패턴 - 개념구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다.쉽게말하면 게임에서 플레이어가 무기를 사용하는 함수를 만들어야 한다고 해보자.무기가 하나는 아닐 것이기 때문에 각각의 무기마다 사용해하는 함수를 만들어야 할것이다.class Player{public:void useSword();void useGun();void useBow();} 이렇게 코드를 작성할 경우 코드가 지저분해지게 되어 가독성이 떨어지게 되며 유지보수 시 문제를 겪게 될것이 당연하다. 더 나아가 Player가 여러 캐릭터로 분화 될 경우 각각의 캐릭터마다 이러한 함수들을 만들게 되야 할 것이고 좋지 못한 코드가 된다.그래서 브릿지 패턴을 사용하게 되는데 브릿지 패턴의 경우 다음과 같이 코드를 작성 할 수 있다. .. 2015. 7. 24.