같은편
홍익대 게임소프트웨어전공의 프로그래밍 단련 공간
같은편
깃허브 주소
https://github.com/madongchan
GitHub 아이콘
  • 분류 전체보기 (85)
    • 게임 프로그래밍 패턴 (2)
    • C# 프로그래밍 (26)
    • C++ 프로그래밍 (32)
      • 함수 (8)
      • 클래스 (22)
    • 알고리즘 공부 (2)
      • codingame 사이트 문제 (11)
    • 유니티엔진 - 게임 공부 (3)
    • 언리얼엔진 - 게임 공부 (4)
    • 쓸모 있을 수 있는 팁 (2)
    • 일상이야기 (3)

최근 댓글

태그

  • 탐욕 알고리즘
  • 최단 경로
  • 스레드
  • 클래스
  • 언리얼
  • 복사 생성자
  • 언리얼엔진
  • 문제 풀이
  • DFS
  • 객체
  • 함수
  • c++
  • 알고리즘
  • task
  • 비동기
  • 예외 처리
  • 람다식
  • 언리얼엔진4
  • C#
  • queue

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
같은편

홍익대 게임소프트웨어전공의 프로그래밍 단련 공간

Unity UnityAction
유니티엔진 - 게임 공부

Unity UnityAction

2023. 4. 5. 13:50

UnityAction은 Unity에서 사용되는 델리게이트(Delegate) 타입 중 하나로, 이벤트를 처리하는 데 사용됩니다. UnityAction은 메서드를 참조할 수 있는 대리자(delegate) 역할을 합니다.

 

예를 들어, 다음은 UnityAction을 사용하여 버튼 클릭 이벤트를 처리하는 코드입니다.

using UnityEngine;
using UnityEngine.UI;

public class ButtonExample : MonoBehaviour
{
    public Button myButton;
    
    void Start()
    {
        // 버튼 클릭 이벤트에 대한 UnityAction 생성
        UnityAction myAction = new UnityAction(ButtonClicked);
        
        // 버튼에 UnityAction 추가
        myButton.onClick.AddListener(myAction);
    }
    
    // 버튼 클릭 이벤트 핸들러
    void ButtonClicked()
    {
        Debug.Log("Button Clicked!");
    }
}

위 코드에서 UnityAction myAction = new UnityAction(ButtonClicked)는 ButtonClicked 메서드를 참조하는 UnityAction을 생성합니다.

그리고 myButton.onClick.AddListener(myAction)은 myAction을 onClick 이벤트에 추가합니다.

 

이렇게 하면 버튼을 클릭할 때마다 ButtonClicked 메서드가 실행되며, "Button Clicked!"라는 로그가 출력됩니다.

 

또다른 예시로 아래는 UnityAction을 사용하여 버튼을 클릭할 때마다 캐릭터를 점프시키는 예시 코드입니다.

using UnityEngine;
using UnityEngine.UI;

public class JumpController : MonoBehaviour
{
    // 캐릭터 점프력
    public float jumpForce = 10f;
    
    // Rigidbody 컴포넌트
    private Rigidbody rb;
    
    void Start()
    {
        // Rigidbody 컴포넌트 가져오기
        rb = GetComponent<Rigidbody>();
        
        // 버튼에 UnityAction 추가
        Button jumpButton = GameObject.Find("JumpButton").GetComponent<Button>();
        jumpButton.onClick.AddListener(Jump);
    }
    
    // 점프 처리 메서드
    void Jump()
    {
        // 캐릭터에 점프력 적용
        rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
    }
}

코드에서 UnityAction 자료형이 직접 사용되지는 않았지만, AddListener 메서드의 매개변수로 UnityAction을 전달하여 사용하고 있습니다.

 

AddListener 메서드는 이벤트를 처리하기 위해 등록된 메서드를 참조하는 델리게이트를 받아들입니다. 따라서 UnityAction을 사용하여 이벤트 처리 메서드를 등록할 수 있습니다.

 

즉, AddListener 메서드의 매개변수로 UnityAction을 전달하여 해당 이벤트가 발생할 때 실행될 메서드를 등록할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'유니티엔진 - 게임 공부' 카테고리의 다른 글

유니티 프로젝트 추가시 .ignore가 적용되지 않는 이유  (0) 2024.03.26
레트로의 유니티 게임 프로그래밍 에센스 - 유니런 게임으로 새롭게 배운 점(at Trigger and Collision)  (0) 2022.12.08
    같은편
    같은편
    책을 통해 이때까지 블로그나 유튜브에서 얻었던 지식의 파편들을 정립하고 합쳐 단단한 발판으로 만들기 위한 블로그

    티스토리툴바