Unity Chapter 8-4. C# 프로그래밍 [고급] : 액션
카테고리: Unity Lesson 1
태그: C Sharp Unity Game Engine
인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!
Chapter 8. C# 프로그래밍 : 고급
🔔 Action
Action
: C#에서 미리 만들어져 제공하는 리턴 타입과 매개변수가 없는 함수의 등록을 위한 델리게이트.
- 리턴 타입과 매개변수가 없는 함수는 아주 많기 때문에 C#에서 미리 만들어 지원하는 델리게이트다.
- using System 해주어야 사용 가능하다.
일반적인 delegate를 사용한 경우
📜Worker.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Worker : MonoBehaviour
{
delegate void Work();
Work work;
void MoveBricks()
{
Debug.Log("벽돌을 옮겼다.");
}
void DigIn()
{
Debug.Log("땅을 팠다.");
}
void Start()
{
work += MoveBricks;
work += DigIn;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
work();
}
}
}
- delegate void
Work
()- 리턴도 하지 않고 (void) 매개변수도 없는 함수들을 등록받는
Work
델리게이트 타입을 정의했다.
- 리턴도 하지 않고 (void) 매개변수도 없는 함수들을 등록받는
- Work
work
Work
타입의 델리게이트인work
를 생성했다.
- void Start()에서 함수들을
work
에 등록해주고 - void Update()에서 work();로
work
를 실행한다.
Action을 사용한 경우
using System;
Action work;
Action
을 사용하기 위해선using System
해주어야 한다.delegate
타입을 정의해주는 것 없이 바로Action
을 사용하여delegte
를 찍어낼 수 있다.- 리턴 타입이 없고(void) 매개변수가 없는 함수만 등록할 수 있다.
📜Worker.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
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();
}
}
}
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기