Version: 2023.2
언어: 한국어
기기 추가
계층 창

기기 시뮬레이터 확장

기기 시뮬레이터는 시뮬레이터 뷰에서 제어판의 UI를 변경하고 기능을 확장할 수 있도록 플러그인을 지원합니다.

플러그인 생성

기기 시뮬레이터 플러그인을 생성하려면 DeviceSimulatorPlugin 클래스를 확장합니다.

UI를 기기 시뮬레이터 뷰에 삽입하려면 플러그인이 다음과 같아야 합니다.

  • title 프로퍼티를 오버라이드하여 비어 있지 않은 문자열을 반환해야 합니다.
  • OnCreateUI 메서드를 오버라이드하여 UI가 포함된 VisualElement를 반환해야 합니다.

플러그인이 이러한 조건을 충족하지 않으면 기기 시뮬레이터는 플러그인을 인스턴스화하지만 시뮬레이터 뷰에 해당 UI를 표시하지 않습니다.

다음 예에서는 타이틀 프로퍼티를 오버라이드하고 시뮬레이터 뷰에 UI를 추가하는 플러그인을 생성하는 방법을 보여 줍니다.

public class TouchInfoPlugin : DeviceSimulatorPlugin
{
    public override string title => "Touch Info";
    private Label m_TouchCountLabel;
    private Label m_LastTouchEvent;
    private Button m_ResetCountButton;

    [SerializeField]
    private int m_TouchCount = 0;

    public override void OnCreate()
    {
        deviceSimulator.touchScreenInput += touchEvent =>
        {
            m_TouchCount += 1;
            UpdateTouchCounterText();
            m_LastTouchEvent.text = $"Last touch event: {touchEvent.phase.ToString()}";
        };
    }

    public override VisualElement OnCreateUI()
    {
        VisualElement root = new VisualElement();
        
        m_LastTouchEvent = new Label("Last touch event: None");
        
        m_TouchCountLabel = new Label();
        UpdateTouchCounterText();

        m_ResetCountButton = new Button {text = "Reset Count" };
        m_ResetCountButton.clicked += () =>
        {
            m_TouchCount = 0;
            UpdateTouchCounterText();
        };

        root.Add(m_LastTouchEvent);
        root.Add(m_TouchCountLabel);
        root.Add(m_ResetCountButton);
            
        return root;
    }

    private void UpdateTouchCounterText()
    {
        if (m_TouchCount > 0)
            m_TouchCountLabel.text = $"Touches recorded: {m_TouchCount}";
        else
            m_TouchCountLabel.text = "No taps recorded";
    }
}
기기 추가
계층 창