공부/Unity

24.04.11

월러비 2024. 4. 15. 18:26

새로 생성한 스크립트

  • Test_Exception : 새로운 오류 메세지 출력 함수 생성 / when 사용해서 같은 이름 다른 조건의 오류메세지를 출력할 수 있다.
  • Test_Nullable : 값 형식을 ?를 사용하는 null 가능 연산으로 바꾼다 / ??인 null 변합 연산자 사용 / 널 가능 연산 확인 출력 / 박싱 언박싱 선언 / 캐스팅 가능한지 확인하는 GetUnderlyingType 함수 사용 / 함수 선언 방법 3가지(함수 하나 만들어서 변수에 넣고 실행, 함수 내부에 함수를 생성한 다음 그 함수를 변수에 넣고 실행, 식 본문 정의로 함수 내부에 함수를 생성한 다음 변수에 넣고 실행)
  • Test_Delegate : 델리게이트 사용법 3가지(지역변수 사용, 멤버변수 사용, 다른 호출법)
  • Test_Delegate1 : 정렬 구현을 델리게이트로 활용하는 법(버블 정렬)
  • Test_Event : 델리게이트와 이벤트 비교 구현
  • Test_Event2 : 이벤트에 add블록 remove블록 사용해서 이벤트 실행 중 추가적인 작업 넣기

기억 안나는 이론

  • 핸들링이 뭐하는 용어인가
  • 오늘 inner function 했다는데 뭔지 기억이 안남(찾아서 정리해라)

기타

  • 스택 오버플로우 에러는 대부분 재귀함수가 발생해서 자기 자신이 호출되는 문제로 발생한다.

값 형식 널 허용 연산

  • 값형식에 ?를 붙이면 null 가능 연산으로 바꿀 수 있다.
    • 이렇게 하면 참조형식으로 바뀌기 때문에 '박싱'이 발생한다.
    int? b = null;
    

?? Null 병합 연산자

  • 리턴 자료형이 셋 다 똑같아야한다.
int? c = 20;
int d = c ?? -1; //널 병합 연산자. / 리턴 자료형이 셋 다 똑같아야한다. / c가 널이 c값을 넣고 널이라면 -1을 넣으라는 연산이다.
print($"d = {d}");

int? e = null;
int f = e ?? -1;
print($"f = {f}");
  • c가 널이 c값을 넣고 널이라면 -1을 넣으라는 연산이다.

델리게이트

  • 델리게이트의 사용법 : 함수를 변수처럼 사용한다.
  • 콜백용이다.
    • 어떤 상황이 오면 이 함수를 실행시켜줘 같은 역할이다.
    • 뭐 클릭되었으니까 내가 어떤 함수를 호출해줄게 같은 역할이
    • 위의 상황들이 ‘콜백;이다.
  • 변수로 할당이 되는것이기 때문에 인터페이스에서 사용 불가능하다.

이벤트

  • 델리게이션을 래핑 했다고 생각하면 된다.
  • 자기 스스로 콜을 하고 외부에서 콜을 하지는 못한다.
    • 델리게이트는 외부에서 콜을 할 수 있다.
    • 이벤트는 내부에서 필요에 의해서만 콜이 가능하다.
  • 얘 자체는 인터페이스에서 수정해서 사용이 가능하다.
    • 즉, 인터페이스에서 사용이 가능하다.
  • 델리게이트는 +=를 써서 추가만 가능하지만, 이벤트는 +=에서 추가할때 또 다른 무언가를 추가할 수 있다.
    • 제네릭을 넣어 이벤트를 추가하고 싶을때 EventHandler<타입>을 추가한다.
    • 이렇게 만든 핸들러에 이벤트를 추가해줄때 add를 넣어 또 다른 추가가 가능하다.
      • 즉, 프로퍼티 사용 가능하냐의 차이다.
  • 이벤트를 사용하는 상황 : 5교시 9분 녹음

구독과 발행

  • 나중에 더 나아가면 서비스 중개자 패턴이라든가 옵저버 패턴을 쓸때도 사용한다.

옵저버 패턴

  • 예. 몬스터의 객체가 생성되면 옵저버에 등록
    • 옵저버에 함수를 등록 ⇒ 일정 시간마다 관찰대상을 살핀다.
    • 사망했다면 상태가 바뀐것이니 이벤트를 콜한다.
    • 추가한 함수를 서버에 전송한다.
  • 옵저버가 받는 2가지 : ‘감시할 대상’과 감시 대상의 ‘바뀐 상황’ 을 받는다.

'공부 > Unity' 카테고리의 다른 글

24.04.15  (0) 2024.04.15
24.04.12  (0) 2024.04.15
24.04.09  (0) 2024.04.09
24.04.08  (0) 2024.04.09
24.04.05  (0) 2024.04.05