유니티 델리게이트 액션 활용해보기

2021. 1. 4. 23:21유니티실습

반응형
728x170

델리게이트란

대리인이라는 의미로 메소드를 대신해서 호출하는 대리자 역할을 합니다.

델리게이트 장점

콜백 메소드를 구현할 때 효율적이다

메소드를 캡슐화하여 사용하여 개체 지향적이고 보안이 유지됩니다.

델리게이트 체인을 활용하여 하나의 델리게이트로 1개이상의 메소드를 연결시킬 수 있다.

 

결과 화면

마우스 클릭 시 delagate Action을 활용하여메서드를 호출합니다.

 

GameEvents 스크립트 

public class GameEvents : MonoBehaviour
{
    public event Action onTouchTrigger;

    void Update() {
        if (Input.GetMouseButtonDown(0)) {
            if(onTouchTrigger != null) onTouchTrigger();
        }
    }
}

GameEvents스크립트에선 이벤트를 발생하는 코드를 기술합니다.

 

TouchAction 스크립트

public class TouchAction : MonoBehaviour
{
    public Transform myParent;
    public GameObject myPrefab;

    private void Start() {
        GameEvents events = GetComponent<GameEvents>();
        events.onTouchTrigger += OnTouchEffect;
    }

    private void OnTouchEffect() {
        Instantiate(myPrefab, Input.mousePosition, Quaternion.identity, myParent );
    }
}

 

TouchAction 스크립트에선 발생한 이벤트에 대한 동작을 기술합니다.

 

 

 

GameEvents 스크립트에 액세스 하여 이벤트를 연결시키고

GameEvents events = GetComponent<GameEvents>(); 
events.onTouchTrigger += OnTouchEffect; 

델리게이트 체인을 활용하여 1개의 델리게이트로 1개 이상의 메서드 연결이 가능합니다.

GameEvents events = GetComponent<GameEvents>(); 
events.onTouchTrigger += OnTouchEffect; 
events.onTouchTrigger += OnTouchEffect2; 
events.onTouchTrigger += OnTouchEffect3; 

 

이벤트 함수에 대한 내용을 기술합니다.

private void OnTouchEffect() { 
    Instantiate(myPrefab, Input.mousePosition, Quaternion.identity, myParent ); 
}

마우스 클릭 지점에 깨짐 이미지를 생성하는 코드입니다.

 

 

 

반응형
그리드형