백지부터 시작하는 이세계 코딩 생활

유니티 - 뒤끝 : 델리게이트 사용, 콜백처리 본문

Unity

유니티 - 뒤끝 : 델리게이트 사용, 콜백처리

조아덕 2022. 2. 13. 00:13

뒤끝 - CRUD 기능

* Delegate : BroadCast 처럼 사용함. (subscriber들에게 publish 된 내용들을 전달(전파) 할 때). 이를 대행자, 대리자 라고 칭함.

* 이벤트 등록 및 삭제하려는 함수를 인벤트 핸들러 라고도 함.

  • 이벤트 등록(subscriber)은 += 으로 함.
  • 이벤트 삭제(subscriber)는 -= 으로 함.
  • 네임스페이스는 System.

Action - return 값을 가지지 않는 형태의 델리게이트.

Func - return 값을 가지는 형태의 델리게이트. 복수개의 파라미터를 실을 수 있으며 마지막에 위치한 파라미터는 Return 값이 됨.

Event - 지역변수 처럼 사용되는 델리게이트. 선언된 클래스에서만 사용이 가능함.

#이벤트발생
전처리 - 통신 : 비동기 상태로 처리 - 후처리
전처리는 prameter 정리
통신할 때 parameter 값을 전송

! 통신완료 후 !

UI에 통신처리 된 뒤의 내용을 표시
뒤끝과 연결되는 CRUD 함수를 생성
생성된 함수는 콜백 처리를 한다
생성된 함수는 스크립트 생성시 Action 이벤트에 등록 시킨다

--- 콜백처리 vvv

private void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        BackEnd.Param param = new BackEnd.Param
        {
            { "KEY0", "VALUE0" },
            { "KEY1", "VALUE1" },
            { "KEY2", "VALUE2" }
        };

        BackendManager.Instance.Insert("USER", param, TestAction);
    }
}

private void TestAction(LitJson.JsonData _json)
{
    print("CALLBACK : " + _json.ToString());
}

///

--- Action 등록 및 사용 vvv

using System;

public class Worker : MonoBehaviour
{
    Action work;

    void MoveBricks()
    {
        Debug.Log("벽돌을 옮겼다.");
    }

    void DigIn()
    {
        Debug.Log("땅을 팠다.");
    }

    void Start()
    {
        work += MoveBricks;
        work += DigIn;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            work();
        }
    }
}

--- Delegate 사용 vvv

delegate void Work();

    Wrok work;

    void MoveBricks()
    {
        Debug.Log("벽돌을 옮겼다.");
    }

    void DigIn()
    {
        Debug.Log("땅을 팠다.");
    }

    void Start()
    {
        work += MoveBricks;
        work += DigIn;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            work();
        }
    }

 


Ref.

-

https://coderzero.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0-C-%EA%B0%95%EC%A2%8C-17-%EC%9D%B4%EB%B2%A4%ED%8A%B8Event-%EB%8C%80%EB%A6%AC%EC%9E%90-%EB%8D%B8%EB%A6%AC%EA%B2%8C%EC%9D%B4%ED%8A%B8-Delegate

 

[유니티 C# 강좌] 17. 이벤트(Event), 대리자 (델리게이트, Delegate)

1. 이벤트(Event) 이벤트는 개체에서 작업 실행을 알리기 위해 보내는 메시지입니다. 이벤트는 외부 이벤트 가입자(Subscriber)에게 특정한 일을 알려 줍니다. 이벤트는 event라는 키워드를 사용하여

coderzero.tistory.com

https://ansohxxn.github.io/unity%20lesson%201/chapter8-4/

 

Unity Chapter 8-4. C# 프로그래밍 [고급] : 액션

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀 🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!

ansohxxn.github.io

https://m.blog.naver.com/enter_maintanance/221639746861

 

[Unity, C#] Delegate, Event, Callback, Action

# Delegate 개요 - Delegate라는 단어의 사전적 정의는 대리자, 위임하다 같은 의미입니다. 예를 들어 일...

blog.naver.com

https://velog.io/@zero9657/TIL-%EC%9C%A0%EB%8B%88%ED%8B%B0-%EB%8D%B8%EB%A6%AC%EA%B2%8C%EC%9D%B4%ED%8A%B8-%EC%9D%B4%EB%B2%A4%ED%8A%B8

 

[Unity_03] 유니티 델리게이트, 이벤트

델리게이트이벤트👉 어떤 기능을 목록에 추가하면 델리게이트가 그 목록들을 대신 실행시켜 준다.어떤 계산을 할지, 계산하는 순간에 알고 있어야함👉 계산하는 내용이 달라졌을 때, 코드를

velog.io

https://luv-n-interest.tistory.com/813

 

이벤트, Events [Unity]

이벤트하면 뭐 경험치 2배, 선물 주는 것 생각이 나는 여기선 그건 아니고 정말 이벤트다. 사건이라고... 해석하기보다 그냥 Event로 받아들이자. 알아보자 정의해보자 어떤 이벤트가 일어났으면

luv-n-interest.tistory.com

-

'Unity' 카테고리의 다른 글

Unity Dictionary 를 활용한 중복처리 예시  (0) 2022.07.13
Comments