event
[C#] event (이벤트) 개념
이벤트는 클래스내에 특정한 일(event)이 있어났음을 외부의 이벤트 가입자(subscriber)들에게 알려주는 기능을 한다. C#에서 이벤트는 event라는 키워드를 사용하여 표시하며, 클래스 내에서 일종의 필드처럼 정의된다. 이벤트에 가입하는 외부 가입자 측에서는 이벤트가 발생했을 때 어떤 명령들을 실행할 지를 지정해 주는데, 이를 이벤트 핸들러라 한다. 이벤트에 가입하기 위해서는 += 연산자를 사용하여 이벤트핸들러를 이벤트에 추가한다. 반대로 이벤트핸들러를 삭제하기 위해서는 -= 연산자를 사용한다. 하나의 이벤트에는 여러 개의 이벤트핸들러들을 추가할 수 있으며, 이벤트가 발생되면 추가된 이벤트핸들러들을 모두 차례로 호출한다. 다음 코드는 클래스(MyButton) 내에서 이벤트(Click)를 정의하고..
[Unity] Animation Event (애니메이션 이벤트) 사용법
개요(Overview) 게임을 제작할 때, 애니메이션이 실행되는 도중에 적절한 타이밍에 맞춰서 무언가가 실행되어야 하는 경우가 종종 발생한다. 예를 들자면 대표적으로는 캐릭터가 걷거나 뛸 때 발소리가 나거나 먼지가 일어나야 한다던지 캐릭터가 무기를 휘두를 때 맞는 타이밍에 맞춰서 데미지가 들어가야 한다던지 하는 경우가 있을 수 있다. 이러한 문제를 해결하는 하드한 방법으로는 계산해낸 타이밍에 맞춰서 해당 함수를 실행시킨다던지, 콜라이더를 원하는 위치에 붙여서 그 콜라이더가 충돌했을때 처리하는 방법이 있지만, 이러한 방법들은 매우 비효율적이다. 계산해낸 타이밍에 맞춰서 원하는 함수를 실행하는 방법의 경우에는 공격 속도나 이동 속도에 맞춰서 모션의 속도가 변하는 유동적인 상황에 대처하기가 매우 어렵고, 특히..
C# Delegate Event 사용법
delegate 는 메서드를 가리킬 수 있는 타입의 간편 표기법. event도 간편표기법. event를 사용하면 정형화된 콜백 패턴을 구현하려할때 코드를 줄일 수 있음. - 조건 1. 클래스에서 이벤트(콜백)를 제공한다. 2. 외부에서 자유롭게 해당 이벤트(콜백)을 구독하거나 해지하는 것이 가능하다. 3. 외부에서 구독/해지는 가능하지만 이벤트 발생은 오직 내부에서만 가능하다. 4. 이벤트의 첫번째 인자는 이벤트를 발생시킨 타입의 인스턴스다. 5. 이벤트의 두번째 인자는 해당 이벤트에 속한 의미 있는 값이 제공된다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi..