69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
using UnityEngine;
|
|
using UVC.Core;
|
|
|
|
namespace Sample
|
|
{
|
|
/// <summary>
|
|
/// 의존성 주입을 받는 클래스 예시
|
|
/// [Inject] 어트리뷰트로 필요한 서비스를 자동 주입받습니다.
|
|
/// </summary>
|
|
public class InjectorSamplePlayerController : MonoBehaviour
|
|
{
|
|
[Header("Player Settings")]
|
|
[SerializeField] private float moveSpeed = 5f;
|
|
|
|
// 필수 의존성
|
|
[Inject] private ILogService _logger;
|
|
[Inject] private IAudioManager _audioManager;
|
|
[Inject] private IGameService _gameService;
|
|
|
|
// 선택적 의존성
|
|
[Inject(Optional = true)] private IUIManager _uiManager;
|
|
[Inject(Optional = true)] private IEnemySpawner _enemySpawner;
|
|
|
|
// 기존 Singleton 주입
|
|
[Inject] private InjectorSampleSettingsManager _settings;
|
|
[Inject] private InjectorSampleNetworkManager _networkManager;
|
|
|
|
// Scene 라이프사이클 서비스
|
|
[Inject(Optional = true)] private InjectorSampleLevelManager _levelManager;
|
|
[Inject(Optional = true)] private ISceneConfig _sceneConfig;
|
|
|
|
private void Start()
|
|
{
|
|
_logger?.Log("PlayerController Start");
|
|
_logger?.Log($"Settings - Volume: {_settings?.MasterVolume}");
|
|
_logger?.Log($"Network Connected: {_networkManager?.IsConnected}");
|
|
_logger?.Log($"Scene: {_sceneConfig?.SceneName}");
|
|
_gameService?.Initialize();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
// Space: 점프 + 점수 추가
|
|
if (Input.GetKeyDown(KeyCode.Space))
|
|
{
|
|
_audioManager?.PlaySFX("jump");
|
|
_levelManager?.AddScore(10);
|
|
}
|
|
|
|
// Escape: 일시정지 팝업
|
|
if (Input.GetKeyDown(KeyCode.Escape))
|
|
_uiManager?.ShowPopup("Pause", "Game Paused");
|
|
|
|
// E: 적 스폰
|
|
if (Input.GetKeyDown(KeyCode.E))
|
|
_enemySpawner?.SpawnEnemy(transform.position + Vector3.forward * 5f);
|
|
|
|
// S: 게임 저장
|
|
if (Input.GetKeyDown(KeyCode.S))
|
|
_gameService?.SaveGame();
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
_logger?.Log("PlayerController Destroyed");
|
|
}
|
|
}
|
|
}
|