feat(Dialogue): 实现基本的对话系统

This commit is contained in:
2025-10-23 15:46:17 +08:00
parent 869d5794f3
commit efcbc8eea5
29 changed files with 1398 additions and 86 deletions

View File

@@ -14,50 +14,45 @@ namespace UI
[SerializeField] private GameObject reminderDeleteLinePrefab;
private PlayerInteractorController playerInteractorController;
private PlayerConnectController playerConnectController;
private PlayerDialogueController playerDialogueController;
protected override void Awake()
{
base.Awake();
ControllerLocator.Instance.TryGetWait<PlayerInteractorController>(OnGetInteractorController);
ControllerLocator.Instance.TryGetWait<PlayerConnectController>(OnGetConnectController);
ControllerLocator.Instance.TryGetWait<PlayerDialogueController>(OnGetDialogueController);
}
private void OnGetInteractorController(PlayerInteractorController controller)
{
playerInteractorController = controller;
playerInteractorController.OnGazeEnter += HandleInteractGazeEnter;
playerInteractorController.OnGazeExit += HandleInteractGazeExit;
}
private void HandleInteractGazeEnter(GameObject obj)
{
reminderInteractPrefab.SetActive(true);
}
private void HandleInteractGazeExit(GameObject obj)
{
reminderInteractPrefab.SetActive(false);
playerInteractorController.OnGazeEnter += (obj) => reminderInteractPrefab.SetActive(true);
playerInteractorController.OnGazeExit += (obj) => reminderInteractPrefab.SetActive(false);
}
private void OnGetConnectController(PlayerConnectController controller)
{
playerConnectController = controller;
playerConnectController.OnGazeEnter += HandleConnectGazeEnter;
playerConnectController.OnGazeExit += HandleConnectGazeExit;
playerConnectController.OnGazeEnter += (obj) =>
{
reminderConnectPrefab.SetActive(true);
reminderSetPointPrefab.SetActive(true);
reminderDeleteLinePrefab.SetActive(true);
};
playerConnectController.OnGazeExit += (obj) =>
{
reminderConnectPrefab.SetActive(false);
reminderSetPointPrefab.SetActive(false);
reminderDeleteLinePrefab.SetActive(false);
};
}
private void HandleConnectGazeEnter(GameObject obj)
private void OnGetDialogueController(PlayerDialogueController controller)
{
reminderConnectPrefab.SetActive(true);
reminderSetPointPrefab.SetActive(true);
reminderDeleteLinePrefab.SetActive(true);
}
private void HandleConnectGazeExit(GameObject obj)
{
reminderConnectPrefab.SetActive(false);
reminderSetPointPrefab.SetActive(false);
reminderDeleteLinePrefab.SetActive(false);
playerDialogueController = controller;
playerDialogueController.OnGazeEnterDialogue += (obj) => reminderInteractPrefab.SetActive(true);
playerDialogueController.OnGazeExitDialogue += (obj) => reminderInteractPrefab.SetActive(false);
}
}
}