This commit is contained in:
JA
2026-06-20 19:34:23 +08:00
parent e5031c0068
commit d442805c3f
4136 changed files with 514641 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DialogueSystem : MonoBehaviour
{
[SerializeField] private Dialogue dialogue;
[SerializeField] private GameObject dialogBox;
[SerializeField] private Text dialog;
[SerializeField] private Text characterName;
[SerializeField] private Image characterSprite;
[SerializeField] private CharacterType type;
private int index;
private bool isInTurn;
private int npcId;
public Dictionary<int, List<DialogNode>> dialogNodes = new Dictionary<int, List<DialogNode>>();
private void Awake()
{
foreach (var dia in dialogue.dialogNode)
{
if (!dialogNodes.ContainsKey(dia.npcID))
{
dialogNodes.Add(dia.npcID,new List<DialogNode> { dia});
}
else
{
dialogNodes[dia.npcID].Add(dia);
}
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.E) && isInTurn)
{
Play();
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Npc"))
{
Debug.Log("aaa");
isInTurn = true;
npcId = collision.GetComponent<UITip>().GetNpcId();
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.CompareTag("Npc"))
{
Debug.Log("bbb");
isInTurn = false;
index = 0;
dialogBox.SetActive(false);
}
}
void Play()
{
dialogBox.SetActive(true);
DialogNode node = dialogNodes[npcId][Mathf.Clamp(index++, 0, dialogNodes[npcId].Count - 1)];
if (index - 1 == dialogNodes[npcId].Count)
{
dialog.text = "抱歉,我很忙,你可以找一下事情做";
}
else
{
dialog.text = node.dialog;
}
characterName.text = node.characterName;
characterSprite.overrideSprite = node.characterSprite;
if (index - 1 == dialogNodes[npcId].Count)
{
dialog.text = null;
dialogBox.SetActive(false);
}
}
}