Unity Events & Unity Actions | Unity

Поделиться
HTML-код
  • Опубликовано: 29 дек 2024

Комментарии • 40

  • @fury-of-pluto
    @fury-of-pluto 3 года назад +1

    군더더기 없는 이 깔끔함은 대체 무엇?

  • @kmj8fl593
    @kmj8fl593 2 года назад +3

    정말 감사합니다 베르님

  • @Joohyunsang
    @Joohyunsang 2 года назад +3

    쉽고 핵심적인 강의 영상 감사합니다! 혹시 유료 가입하면 더 디테일한 강의도 볼 수 있을까요?

    • @wergia
      @wergia  2 года назад

      멤버십은 후원 용도라 더 디테일한 유료 강의는 따로 없습니다.
      원하시는 내용의 강좌가 있다면 아래의 디스코드 채널의 강의요청 방에서 신청하실 수 있습니다.
      문제라면 대기중인 강좌 요청이 180개 정도 된다는 것 뿐입니다. ㅎㅎ
      discord.gg/tqmRTy4pgk

  • @SRVortigaunt
    @SRVortigaunt 3 года назад +2

    이 영상이 정말 도움이 많이 됩니다

  • @소잃고뇌약간고치-p2v
    @소잃고뇌약간고치-p2v 3 года назад +1

    베르형. 델리게이트나 액션에서 호출할때
    1. 델리게이트명 or 액션명() /////
    2. 델리게이트명 or 액션명.Invoke() ////
    1번하고 2번하고 똑같은거임?? invoke 생략가능한거임??? 아님 성질이 다른거임?
    베르형 사랑행

    • @wergia
      @wergia  3 года назад

      1번이 2번의 생략 형태라고 보면 될 듯 합니다.

  • @GalaxySquareRoot
    @GalaxySquareRoot 3 года назад +2

    베르님 유니티 이벤트를 사용해서 플레이어가 죽으면 몬스터 애니메이션 상태가 대기로 변하게 하려하는데
    유니티 이벤트에 몬스터를 등록하면 해당 객체만 실행되는것 같은데, 이럴때는 어떻게 하나요?

    • @wergia
      @wergia  3 года назад +1

      매니저 객체를 만들어서 플레이어를 등록해두고 몬스터의 객체가 그것을 통해 접근해서 플레이어의 상태를 감시하는 것은 어떨까요?

    • @GalaxySquareRoot
      @GalaxySquareRoot 3 года назад +1

      @@wergia 게임 매니저 객체를 만들어서 플레이어가 죽을시 유니티 이벤트를 사용해, 게임 매니저의 함수를 호출하고 해당 함수에서 FindObjectsOfType로 모든 몬스터 객체들을 찾아 State를 idle로 변환 시키는걸로 하기는 했는데 별로일까요?

    • @wergia
      @wergia  3 года назад

      @@GalaxySquareRoot 몬스터 객체가 너무 많지 않다면 나쁘지 않을 것 같습니다. 어차피 플레이어가 죽을 때만 한 번 발동되는 기능이라...
      하지만 최적화를 따지자면 몬스터들도 매니저에 등록시켜서 호출하는게 좋을 듯합니다.

    • @GalaxySquareRoot
      @GalaxySquareRoot 3 года назад +1

      @@wergia 몬스터들을 매니저에 등록시킨 다는게, 어떻게 하는건지 설명해주실수 있나요?

    • @wergia
      @wergia  3 года назад

      @@GalaxySquareRoot 매니저에서 몬스터 리스트를 만들어두고 몬스터가 생성되면 Start 함수에서 매니저를 찾아서 그 리스트에 자기 자신을 넣어주면 됩니다.

  • @박건영-k3u
    @박건영-k3u 4 года назад +1

    Find 함수들을 남용하지 않아야 하는데 사용해야 한다면 find함수말고 다른 방법은 없을까요?

    • @wergia
      @wergia  4 года назад +1

      남용하지 않아야 한다는 말은 보통 Update 함수처럼 매프레임 호출되는 로직에서 사용하지 말라는 의미라고 보시면 됩니다.
      그리고 필요한 오브젝트를 찾아서 사용하는 방법은 상황에 따라서 계속 달라질 수 있습니다.
      물리적인 상황이라면 레이캐스트나, 콜라이더, 트리거의 충돌을 통해서 찾는 방법이 있을 수도 있고,
      찾아놓고 계속해서 사용해야 되는 상황이라면 필요할 때마다 Find로 찾아서 쓰는게 아니라 처음에 한 번 찾을 때는 Find를 이용해서 찾은 다음 내부 변수에 저장해두고 계속해서 사용하는 방법등이 있을 수 있습니다.

    • @박건영-k3u
      @박건영-k3u 4 года назад +1

      ​@@wergia그렇군요 자세히 알려주셔서 감사합니다

  • @stz3ro_
    @stz3ro_ 3 года назад +1

    FindObjectOfType 안쓰면 어떤방식으로 해야 되나요??

    • @wergia
      @wergia  3 года назад

      미리 캐싱해두고 사용하는 것이 좋습니다.

  • @꿈꾸는모험가
    @꿈꾸는모험가 4 года назад +1

    함수 관리자라 봐도 무방하네요 ㅇㅁㅇ ! 감사합니다~

  • @brH-mg5kq
    @brH-mg5kq 4 года назад +3

    와 이거 찾고있었는데 감사합니다!

  • @이게나야-s3v
    @이게나야-s3v 3 года назад +1

    UnityAction으로도 UnityEvent를 대체할 수 있는데 굳이 UnityEvent에 인자로서 넣어주는 이유는 무엇인가요?
    단순히 직렬화되어 인스펙터 상에 노출될 수 있는 UnityEvent로 변환하기 위해서 인가요??
    그렇다면 애초에 UnityEvent를 선언하고 인자로 콜백메서드들을 넣어주면 되는 것이 아닌지요..
    왜 굳이 UnityAction을 한번 거쳐서 UnityEvent로 가야하는지 이해가되질 않습니다.

    • @이게나야-s3v
      @이게나야-s3v 3 года назад +1

      지금 다시 생각해봤는데, 매개변수에 메서드를 넣어주려면 애초에 매개변수 타입이 delegate 여야 하기 때문에 여러 delegate 중 UnityAction을 쓴 것 뿐인가요??

    • @wergia
      @wergia  3 года назад +1

      우선 UnityEvent를 사용하는 이유는 말씀하신대로 인스펙터에 직렬화되어 노출되게 하기 위해서 사용하는 것입니다.
      만약 인스펙터에 노출할 필요가 없다면 UnityAction만 사용해도 충분하죠.
      UnityAction을 한번 거쳐서 UnityEvent로 넣은 이유는 직렬화를 위해서 코드에서 직접 등록해줄 때 사용되는 AddListener 함수의 기본 인자의 타입이 UnityAction이라 영상에서는 일부러 변환해서 보여드렸습니다
      말씀하신대로 그냥 메서드를 곧바로 넣어주셔도 문제는 없습니다.

    • @이게나야-s3v
      @이게나야-s3v 3 года назад +1

      @@wergia 최고입니다

  • @dhstudio-1011
    @dhstudio-1011 4 года назад +1

    인스펙터가 깔끔해지네요!

  • @gorani_TV
    @gorani_TV 4 года назад +4

    와우

  • @유진한-b7j
    @유진한-b7j 3 года назад

    와 찾던 정보인데 . 고맙습니다`

  • @이아랑-p5n
    @이아랑-p5n 4 года назад +1

    귀에 쏙쏙

  • @예능-q3y
    @예능-q3y 3 года назад +3

    Action과 UnityAction이 어떻게 다른건지 좀 알려주시면 감사하겠습니다
    보기엔 같아 보이는데 차이점을 모르겠네요

    • @wergia
      @wergia  3 года назад

      기본적인 기능은 같지만 차이점이 있습니다.
      Action은 System 네임스페이스에 속하며 기본 C#에서 제공되는 것이고
      UnityAction은 UnityEngine.Events 네임스페이스에 속하며 유니티에서 제공되는 것입니다.
      그리고 UnityAction은 UnityEvent의 AddListener 함수의 매개변수로 넣을 수 있지만 Action은 불가능하죠.
      UnityAction이 유니티 기능들과 함께 사용하기에는 더 좋습니다.

    • @예능-q3y
      @예능-q3y 3 года назад

      @@wergia 요근래 질문이 많았는데 답변을 잘해주셔서 도움이 많이 됬습니다

  • @shanlee6452
    @shanlee6452 4 года назад

    잘 봤어요~!