101 lines
2.8 KiB
C#

using UnityEngine;
public class SimpleEventExample : MonoBehaviour
{
[Header("StreamDock 통신")]
[SerializeField] private SimpleStreamDockCommunicator streamDock;
void Start()
{
// StreamDock 이벤트 구독
if (streamDock != null)
{
streamDock.OnStreamDockMessageReceived.AddListener(OnStreamDockMessage);
streamDock.OnConnected.AddListener(OnStreamDockConnected);
streamDock.OnDisconnected.AddListener(OnStreamDockDisconnected);
}
}
/// <summary>
/// StreamDock에서 메시지 수신 시 처리
/// </summary>
private void OnStreamDockMessage(string eventType, object data)
{
Debug.Log($"StreamDock 이벤트 수신: {eventType}");
switch (eventType)
{
case "button_clicked":
// 버튼 클릭 시 실행할 코드
Debug.Log("버튼 클릭 이벤트 실행!");
DoSomething();
break;
case "dial_rotate":
// 다이얼 회전 시 실행할 코드
Debug.Log("다이얼 회전 이벤트 실행!");
DoSomethingElse();
break;
case "dial_press":
// 다이얼 누름 시 실행할 코드
Debug.Log("다이얼 누름 이벤트 실행!");
DoAnotherThing();
break;
}
}
/// <summary>
/// StreamDock 연결 시 처리
/// </summary>
private void OnStreamDockConnected()
{
Debug.Log("StreamDock에 연결되었습니다!");
}
/// <summary>
/// StreamDock 연결 해제 시 처리
/// </summary>
private void OnStreamDockDisconnected()
{
Debug.Log("StreamDock 연결이 해제되었습니다.");
}
// 여기에 원하는 동작들을 구현하세요
private void DoSomething()
{
Debug.Log("버튼 클릭으로 실행된 동작!");
// 예: 오브젝트 활성화/비활성화, 애니메이션 재생, 사운드 재생 등
}
private void DoSomethingElse()
{
Debug.Log("다이얼 회전으로 실행된 동작!");
// 예: 볼륨 조절, 카메라 회전, 값 변경 등
}
private void DoAnotherThing()
{
Debug.Log("다이얼 누름으로 실행된 동작!");
// 예: 특수 기능 실행, 모드 변경 등
}
// 공개 메서드들 (Inspector에서 호출 가능)
[ContextMenu("테스트 동작 1")]
public void TestAction1()
{
DoSomething();
}
[ContextMenu("테스트 동작 2")]
public void TestAction2()
{
DoSomethingElse();
}
[ContextMenu("테스트 동작 3")]
public void TestAction3()
{
DoAnotherThing();
}
}