TIL

[TIL] 내일배움캠프_Unity 4주차 복습(인터페이스, 델리게이트), 과제 제출

Hwone 2023. 8. 24. 21:21

4주차 강의는 전에 언리얼을 개발하면서 사용했던 기술들과 면접준비 하면서 배웠던 내용과 고급 기능들이 많이 있었다 

그래서 아주 중요하다고 생각하여 여러번 보고 이해를 더 정확히 하기 위해 따로 검색을 하며 복습을 진행하였다 

 

인터페이스는 구체적인 객체에 의존해서 구현하지 않고 추상화된 객체를 이용해 구현할 수 있게 해준다 

예를 들면 ICharacter 인터페이스가 있고 void start(Icharacter character) 함수가 있을때 

ICharacter 인터페이스를 상속받은 클래스의 객체는 어떤 객체든 매개변수로 넣고 사용할 수 있다 

이것을 느슨한 결합이라고 한다 

 

델리게이트는 값이 아닌 코드 자체를 넘기고 싶을 때 사용하는것으로 

접근할 수 없는 메소드를 델리게이트를 이용해서 해결할 수 있다 라고 이해했다 

 

그리고 델리게이트에는 이벤트라는 키워드가 있는데 그냥 델리게이트와 비교해서 언제 사용되는지에 대해 보면

 

그냥 델리게이트는 콜백 용도로 사용한다 

기본 베이스 : 어떤 함수를 등록 해놓고 사용하면 등록한 함수가 실행된다 

추가로 다른 함수도 등록을 해놓으면 처음 순서대로 등록한 함수가 실행된다 

OnAttack = Attack // 함수 저장 

public void Attack(float damage)
{           
	Console.WriteLine("enemy가 공격을 했습니다.");
    Console.WriteLine("호출 준비");
    Console.WriteLine("호출 끝");
}

//AddFunc 실행됨 
OnAttack += AddFunc;

델리게이트를 사용한 후 함수가 끝나면 추가로 더 등록된 함수가 있다면 순서대로 호출이 된다 

 

델리게이트 이벤트는 객체의 상태 변화, 사건의 발생을 알리는 용도로 

기본 베이스 : 함수를 등록하고 다른 함수 안에서 호출하고 싶은 곳에 invoke를 해주면 

다른 함수가 실행되는 동안 등록한 함수가 실행되고 완료 후에 마저 함수를 진행한다 

public void Attack(float damage)
{           
	Console.WriteLine("enemy가 공격을 했습니다.");
        Console.WriteLine("호출 준비");
        OnAttack?.Invoke(damage); // AddFunc 실행됨 
        Console.WriteLine("호출 끝");
}
OnAttack += AddFunc;

이런식으로 Attack함수 안에서 호출이 되어 등록한 함수가 실행되고 완료되면 Attack 함수가 마저 실행된다 

 

우여곡절 끝에 과제 제출 완료...! 
https://hwon-note.tistory.com/38

 

[C# 문법 종합반] 4주차 과제 - TextRPG

코드 더보기 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Reflection.Metadata; using System.Runtime; using System.Runtime.CompilerServices; using System.Runtime.

hwon-note.tistory.com