Visual Script (3) - C# 스크립트의 함수 호출

들어가며

Visual Script에서 가장 궁금했던 점 중 하나였던, 코드로 이루어진 스크립트의 함수를 호출하는 부분이다. 과연 이게 될까? 싶었는데, 막상 해보면 가능은 했다. 지금부터 그 방법을 보겠다.

 


Regeneration Nodes

C# 스크립트의 함수에 그래프가 접근을 하려면 필요한 절차가 있다. 일단, 그래프를 만든 다음에 스크립트에서 함수를 작성하면 그래프에서는 접근할 수가 없다. 자동으로 업데이트가 되는 것이 아니라, 우리가 수동으로 업데이트를 해줘야하는 것이다. 그 절차는 다음과 같다.

 

  1. 함수를 작성하고 ctrl + s를 눌러 저장과 컴파일을 한다.
  2. Project Setting에 들어가서 Visual Scripting에 들어간다.
  3. Regeneration Nodes를 눌러 잠깐의 로딩을 거친다.
  4. 그래프로 돌아와서 함수명으로 유닛을 검색한다.

일단, 함수를 작성하고 컴파일을 한다.

using UnityEngine;

public class TestController : MonoBehaviour
{
    public int Hp;
    void Start()
    {
        Hp = 10;
    }

    public void TargetRotate(GameObject target, Vector3 dir)
    {
        target.transform.Rotate(dir * Time.deltaTime);
    }
}

 

그 다음, 유니티 에디터의 화면 좌측 위의 Edit을 누르고 Project Setting에 들어간다.

 

그러면 왼쪽에서 Visual Scripting을 찾아서 누르고 바로 Regenration Nodes가 보일 것이다. 누르면 된다.

 

 

이후에는 사진처럼 C#의 함수 유닛을 생성하면 된다.

 

이때, 해당 스크립트는 그래프가 붙여진 오브젝트가 아니라, Player 오브젝트에 붙어있는 스크립트이다. 그래서 누구의 함수를 호출 할 것인지 지정하는 부분이 필요하다. 사진에서는 이미 User에 Player 오브젝트를 담아놨으므로 User의 출력 포트를 연결해놨다.

 

밑의 동영상은 테스트 결과이다.

 


스크립트의 변수 가져오기

반환값이 있는 함수도 같은 방법으로 작성하여 사용할 수 있다.

 

이번에도 조건은 같지만, GetHp라는 반환 값을 가지는 함수를 그래프에서 호출하여 스크립트의 변수를 사용할 수 있다.

다음 사진이 그 예시이다.


마무리

스크립트와 그래프 간의 상호작용이 가능하다는 것과 방법을 알게 되었으니, 좀 더 체계적인 설계가 가능해졌다. 예를 들어 구체적인 기능들을 스크립트로 구현을 해놓고, 상태에 따라서 어떤 함수를 호출하냐는 그래프로 설계를 해둘 수 있다.

이렇게 하면, 런타임 중에도 시각적으로 어떤 상태인지를 확인 할 수 있어진다는 장점이 생길 것이다.

 

다음은 Visual Script의 Custom Event에 대해서 알아보도록 하겠다.