정체불명의 모모

프로젝트 작업하면서(RTS) / 유니티 Action Delegate 본문

프로그래밍(C#)

프로젝트 작업하면서(RTS) / 유니티 Action Delegate

정체불명의 모모 2020. 5. 14. 11:20

안녕하세요~.

너무 오랜만에 글을 올려 봅니다.

 

현재 국비로 게임 프로그래밍을 수업듣고 있습니다.

너무 바쁜 하루하루를 보내느라 글을 쓸 여유 조차 없었습니다.

 

하지만 최근에 유니티 개인 프로젝트에 들어가면서 , 정보들을 정리 하는게 훨씬 나중에 도움이 될 것 같아

다시 시작 해보려 합니다.

 

작업중인 프로젝트는 RTS 게임 입니다. (3D)

====================================================================

유니티(C#) - Action , Fuc , Delegate

참고 사이트 : https://www.youtube.com/watch?v=7H3MHXfFkhI

                  (유튜버 : 케이디)

 

publc class Test : MonoBebavior
{
				// 형식 매개 변수 < T1 , T2 >
	delegate void MyDelegate<T1 ,T2>(T1 a, T2 b);
    MyDelegate<int , int> myDelegate;
	// 델리게이트를 선언 하기 위해선 두줄이 필요 했습니다.
    // 이럴때 필요한게 Action, Function 입니다.
  

# Atction 과 Function의 차이

= 바로, 반환 타입이 입니다.  (Atction을 쓰기 위해 , using System을 입력해 줘야 합니다.)

  1. 반환 타입이 있을 경우 -> Function       /    2. 반환 타입이 없을 경우 -> Action

   

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

publc class Test : MonoBebavior
{
				// 형식 매개 변수 < T1 , T2 >
	delegate void MyDelegate<T1 ,T2>(T1 a, T2 b);
    MyDelegate<int , int> myDelegate;
	// 델리게이트를 선언 하기 위해선 두줄이 필요 했습니다.
    // 이럴때 필요한게 Action, Function 입니다.
    
    // 위의 Delegate와 똑같이 만들어 주겠습니다.
    Action<int , int> myDelegate2;
    

Action<int, int> myDelegate2 가 한줄이어도 되는 이유는 Action 안에 delegate가 있기 때문입니다.

 

위의 코드는 제가 작업중인 프로젝트 코드 입니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

publc class Test : MonoBebavior
{
	// 이번에는 반환 값이 있는 delegate를 만들어 주겠습니다.
	delegate string MyDelegate<T1, T2> (T1 a, T2 b);
    MyDelegate<int , int> myDelegate;

	Action<int , int> myDelegate2;
    
    // < int(T1) , int(T2) , string(TResult) > 반환 값이 있는 delegate
    Func<int,int,string> myDelegaete3;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

publc class Test : MonoBebavior
{
	// 이번에는 반환 값이 있는 delegate를 만들어 주겠습니다.
	delegate string MyDelegate<T1, T2> (T1 a, T2 b);
    MyDelegate<int , int> myDelegate;

	Action<int , int> myDelegate2;
    
    // < int(T1) , int(T2) , string(TResult) > 반환 값이 있는 delegate
    Func<int,int,string> myDelegaete3;
    
    void Start()
    {
      // 람다식
      myDelegate3 = (int a , int b ) => {int sum = a + b ; return sum +"이 리턴되었습니다.";};
   
   	  MyDelegate(3,5);
   }

간략하게 요약 하자면,

Action , Function 은 delegate를 쉽게 사용 할 수 있게 해주는 녀석들입니다.

다만 차이점은 반환값이 있느냐 없느냐 인데,

상황에 따라 유용하게 잘 사용 하면 될 것 같습니다.

 

이거에 관련 하여 제 프로젝트에도 올라가니 프로젝트 작업 일기를 봐주시면 될 것 같습니다.

감사합니다.

Comments