81 lines
3.3 KiB
C#
81 lines
3.3 KiB
C#
using UnityEngine;
|
|
using UVC.Core;
|
|
|
|
namespace Sample
|
|
{
|
|
/// <summary>
|
|
/// Type D 예시: MonoBehaviour SingletonApp - 네트워크 관리자
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// <para><b>[ 타입 ]</b> Type D - MonoBehaviour SingletonApp (SingletonApp<T> 상속)</para>
|
|
/// <para><b>[ 라이프사이클 ]</b> App - 씬 전환 시에도 유지 (DontDestroyOnLoad)</para>
|
|
///
|
|
/// <para><b>[ 특징 ]</b></para>
|
|
/// <list type="bullet">
|
|
/// <item><description>MonoBehaviour이므로 Unity 생명주기 메서드 사용 가능</description></item>
|
|
/// <item><description>씬에 미리 배치하거나 Instance 접근 시 자동 생성</description></item>
|
|
/// <item><description>DontDestroyOnLoad 자동 적용</description></item>
|
|
/// <item><description>Inspector에서 설정 가능</description></item>
|
|
/// </list>
|
|
///
|
|
/// <para><b>[ 등록 방법 ]</b></para>
|
|
/// <code>Injector.RegisterSingleton<InjectorSampleNetworkManager>();</code>
|
|
///
|
|
/// <para><b>[ 씬 설정 (선택) ]</b></para>
|
|
/// <list type="number">
|
|
/// <item><description>빈 GameObject 생성 → 이름: "NetworkManager"</description></item>
|
|
/// <item><description>InjectorSampleNetworkManager 컴포넌트 추가</description></item>
|
|
/// </list>
|
|
/// <para>또는 코드에서 Instance 접근 시 자동으로 GameObject가 생성됩니다.</para>
|
|
///
|
|
/// <para><b>[ 사용 방법 ]</b></para>
|
|
/// <code>
|
|
/// // 방법 1: [Inject] 어트리뷰트 사용
|
|
/// [Inject] private InjectorSampleNetworkManager _networkManager;
|
|
/// _networkManager.Connect("wss://server.example.com");
|
|
///
|
|
/// // 방법 2: 직접 Instance 접근 (기존 Singleton 방식)
|
|
/// InjectorSampleNetworkManager.Instance.Connect("wss://server.example.com");
|
|
/// </code>
|
|
///
|
|
/// <para><b>[ InjectorSampleSettingsManager와의 차이점 ]</b></para>
|
|
/// <list type="table">
|
|
/// <item><term>SettingsManager</term><description>Singleton<T> - 순수 C#, GameObject 없음</description></item>
|
|
/// <item><term>NetworkManager</term><description>SingletonApp<T> - MonoBehaviour, GameObject 필요</description></item>
|
|
/// </list>
|
|
/// </remarks>
|
|
public class InjectorSampleNetworkManager : SingletonApp<InjectorSampleNetworkManager>
|
|
{
|
|
/// <summary>서버 연결 상태</summary>
|
|
public bool IsConnected { get; private set; }
|
|
|
|
/// <summary>
|
|
/// SingletonApp 초기화 메서드 - Awake에서 자동 호출됩니다.
|
|
/// </summary>
|
|
protected override void Init()
|
|
{
|
|
base.Init();
|
|
Debug.Log("[InjectorSampleNetworkManager] Initialized");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 서버에 연결합니다.
|
|
/// </summary>
|
|
/// <param name="serverUrl">서버 URL (예: wss://server.example.com)</param>
|
|
public void Connect(string serverUrl)
|
|
{
|
|
Debug.Log($"[InjectorSampleNetworkManager] Connecting to {serverUrl}");
|
|
IsConnected = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 서버 연결을 해제합니다.
|
|
/// </summary>
|
|
public void Disconnect()
|
|
{
|
|
Debug.Log("[InjectorSampleNetworkManager] Disconnected");
|
|
IsConnected = false;
|
|
}
|
|
}
|
|
}
|