유니티 delegate event 예제

이벤트를 테스트하려면 이 PlayerDamager.cs 스크립트를 사용해 보겠습니다. 마지막으로, 질문의 다른 부분에 관해서는 Palaven의 영혼에 맹세, 유니티 이벤트와 유니티 리스너는 기본적으로이 정확히 같은 일, 만 미리 만든 (이미 가입 할 수있는 이벤트 선언). 당신은 실현하지 않고이것을 사용 했을 수도 있습니다:당신은 당신의 UI에서 단추를 사용 하는 경우, 그들의 OnClick 기능을 설정할 때, 기본적으로 설정 하는 OnClick 이벤트에 기능을 구독 하는 장면에 단추를 넣을 때. 그리고 유니티를 실행, 당신은 지금 ChangePosition 및 ChangeColor가 호출되지 않습니다 알 수 있습니다,만 ChangeRotation 코드가 실행됩니다, 이것은, 할당 연산자가 기존 호출 목록을 재설정하기 때문에, 이 상황은 여러 클래스를 추적하는 것이 매우 어렵기 때문에 이러한 상황을 피하기 위해 동일한 대리자를 구독하려면 이벤트를 사용합니다. 이 이벤트에 대 한 확인, 지금 우리는 코드를 계속 할 수 있습니다 ». Unity 청취자, 유니티 이벤트, 대의원, C# 이벤트의 모든 차이점과 용도를 이해하는 데 어려움이 있습니다. 예를 들어 게임 에 `OnSave`라는 이벤트가 있는데, 이 이벤트는 게임 저장 절차가 시작될 때 발생합니다. 이벤트를 코딩한 적이 없다면 적어도 이전에 이벤트에 연결한 적이 있을 것입니다. 그런 다음 AudioClip을 할당해야 합니다. 당신이 예에서 볼 수 있듯이, 나는 내 자신의 사운드 효과를 기록하고 « oww »라는 이름을 했습니다. Player.cs 스크립트에서 이벤트를 정의한 방법을 다시 한 번 살펴보겠습니다. 이제 검사기에서 대리자 처리기 « OnButtonClick » 메서드에 단추 이벤트를 연결하고 재생을 클릭합니다.

단추를 클릭 하면 메서드가 할당 되어 호출 됩니다 볼 수 있습니다. 이러한 방식으로 모든 클래스는 OnButtonClickDelegate를 구독하고 호출될 때 콜백을 받을 수 있습니다. 나는 그것이 지금 의미가 있기를 바랍니다. 대리자는 선언된 대리자의 서명과 동일한 서명을 갖는 메서드의 참조를 보유하는 데 사용되는 다소 참조 형 변수입니다. 대리자 참조는 런타임에 변경할 수 있습니다. 호출될 때 참조되는 모든 메서드에 대해 알립니다. 대리자는 기본적으로 « 이런 종류의 함수는 이벤트에 가입할 수 있습니다(원하는 경우 컨테이너에 넣을 수 있음) »라고 말합니다. 다음은 GlobalControl이라는 공용 단일 클래스에서 내 특정 코드 예제입니다: 이 예제에서는 HP 값에 대해 단일 정수로 구성된 PlayerTookDamageEvent라는 새 대리자를 만듭니다. sceneLoaded 이벤트에 등록하고 다음과 같이 반응할 수 있습니다.

그런 다음 다른 코드가 등록할 수 있도록 이벤트를 선언합니다. 이 블로그 게시물의 주요 목적은 Unity에서 C# 이벤트를 사용하는 방법에 대한 아이디어를 제공하는 것입니다. 이 예제에서는 sceneLoaded 이벤트가 두 개의 매개 변수를 전달하는 것을 볼 수 있습니다.