}

유니티 Meta SDK의 SnapInteractor Data 활용하기 #Snap Interactable

Snap Interactor의 Data

Snap Interactor컴포넌트에는 Data 필드가 존재합니다.

Data필드는 Object Type이므로 여러 종류의 Type을 등록할 수 있습니다.

 

저는 Scriptable Object를 활용해서 Snap될 시, 해당 Snap된 객체의 정보를 조금 더 추가적으로 제공하고자 합니다.

[CreateAssetMenu(menuName = "Snap/SnapInfo")]
public class SnapInfo : ScriptableObject
{
    public int PanelId;          // 스냅 자리 번호
    public string Description;   // 설명
}

위와 같이 객체에 추가할 정보들을 작성해줍니다.

Chip Data

Robot Chip을 특정 Snap Zone에 가져다 둘 시 Snap Interactable이 Chip의 (SnapInteractor Data) Snap Info을 파악해서, 그 Chip에 대응하는 Robot을 해당 Zone으로 호출하는 상황입니다.

public class Call : SnapInteractable
{
    public Robot OneRobot;
    public Robot TwoRobot;
    public int Index;
        
    protected override void InteractorAdded(SnapInteractor interactor)
    {
        base.InteractorAdded(interactor);

        var interactorData = interactor.Data as SnapInfo;
        if (interactorData.PanelId == 0)
        {
            OneRobot.SetCallDestination(Index);
        }
        else if (interactorData.PanelId == 1)
        {
            TwoRobot.SetCallDestination(Index);
        }
    }
}

Call이라는 스크립트는 Snap Interactable을 상속받은 후, InteractorAdded를 오버라이딩하여 사용합니다.

 

정리하면 다음과 같습니다.

Snap Interactor의 Data에는 여러가지 추가 정보를 저장할 수 있다.

Snap Interactble은 Snap Interactor와 상호작용시 Snap Interactor의 Data를 읽을 수 있다.