로그라이크를 만족하는 요소 게임을 플레이할 때마다 레벨이 무작위로 생성된다. 유저의 캐릭터가 죽을 때마다 진척도가 0으로 리셋된다. 로그라이트를 만족하는 요소 게임을 플레이할 때마다 레벨이 무작위로 생성된다. 유저의 캐릭터가 죽어도 진척도가 0이 되지는 않는다. 로그라이크 VS 로그라이트 먼저 로그라이크는 유저의 캐릭터가 죽으면 그걸로 끝이다. 진척도는 0이되고 유저는 완전히 처음부터 게임을 진행해야한다. 이 경우 게임의 클리어 가능 여부는 전적으로 유저의 게임실력에 달려있다. 계속 클리어 시도를 하면서 게임에 익숙해지게되고 결국 게임을 클리어 하게 되는것이다. 반면 로그라이트는 클리어 가능여부가 유저의 실력도 영향을 받지만 얼마나 많은 시도를 했냐에 영향을 직접적인 영향을 받게된다. 즉, 이번에는 클리..
명령-질의 분리 원칙(command-query separation principle)은 함수를 호출할 때 본의 아니게 발생한 외부 효과로 예상치 못한 결과가 나오는 일을 방지하는 데 기초가 되는 원칙이다. 함수는 그 성격에 따라 크게 두 가지로 분류할 수 있다. 하나는 어떤 동작을 수행하는 명령(command)이고, 다른 하나는 답을 구하는 질의(query)다. 이러한 두 역할은 한데 섞으면 안 된다. 예를 들어 다음 코드를 살펴보자. function getFirstName() { var firstName = document.querySelector("#firstName").value; firstName = firstName.toLowerCase(); setCookie("firstName", firstN..
두 함수는 상당히 다른일을 한다. resize 함수는 적절한 수의 요소를 삽입하거나 삭제하여 주어진 크기로 만든다 (두번째 인자로 요소의 값을 정할 수 있다). resize함수는 vector의 size에 영향을준다. reserve 함수는 메모리만 할당합니다. 초기화는 하지않는다. 이는 capacity에만 영향을 미치고 size는 바뀌지 않는다. vector에는 아무것도 추가하지 않았기 때문에 백터에는 아무런 값도 없다. 만약 후에 요소를 삽입하면 재할당이 발생하지않는다. 왜냐하면 메모리를 미리할당했기 때문에. 어떤 함수를 선택해야 하느냐는 무엇을 원하는지에 달려있다. 1000개의 디폴트 값을 가진 배열을 원한다면 resize함수를, 아니면 1000개의 값이 들어올것으로 예상하고 재할당을 피하고싶다면 re..
매개변수(parameter)는 함수의 정의부에 있는 변수를 의미하고, 인자(argument)는 함수를 호출할때 전달되는 값입니다 private void DoSomething(int argument1, int argument2); // 매개변수 int value1; int value2; DoSomething(value1, value2); // 인자 혹은 전달인자
Move Move함수에는 인자로 움직일 방향과 델타타임을 곱해준 값을 넘겨주어야합니다. 즉 움직임의 델타값을 받습니다. 반환값은 CollisionFlags라는 플래그값을 반환하는데, 이는 캐릭터가 충돌한 방향을 알려줍니다. 플래그값을 사용하는 방법은 아래의 링크에서 확인해보세요. 그리고 Move함수는 중력의 영향을 받지 않습니다. Unity - Scripting API: CollisionFlags Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and w..
유니티의 UI요소가 클릭되었는지 혹은 드래그 되었는지 등등 알고싶을때가 있죠. 이때 사용할 수 있는 함수들이 있습니다. 아래에서 소개하는 모든 함수들은 Image, RawImage, Text 컴포넌트중 하나이상이 부착되어 있는 상태에서 해당 컴포넌트의 Raycast Target 필드가 체크되어 있어야합니다. 또한 해당 함수들을 구현하기 위해서 해당 함수를 가지고있는 인터페이스를 상속받아야합니다. 인터페이스명은 함수위에 적어놓았습니다. //IBeginDragHandler public void OnBeginDrag(PointerEventData eventData) { Debug.Log("Drag Begin"); } //IDragHandler public void OnDrag(PointerEventData e..