在 Unity 中实现只能进行一次的对话,可以使用一个标志位来控制对话的触发和执行。下面是一个示例代码:\n\ncsharp\npublic class DialogueTrigger : MonoBehaviour\n{\n private bool hasTriggered = false; // 对话是否已经触发过的标志位\n\n public Dialogue dialogue; // 对话内容\n\n public void TriggerDialogue()\n {\n if (!hasTriggered) // 如果对话还没有触发过\n {\n hasTriggered = true; // 设置标志位为已触发\n\n // 执行对话\n FindObjectOfType<DialogueManager>().StartDialogue(dialogue);\n }\n }\n}\n\n\n上述代码中,DialogueTrigger 是一个对话触发器的脚本,其中 hasTriggered 表示对话是否已经触发过的标志位。在 TriggerDialogue() 方法中,首先检查标志位是否为 false,即对话是否还没有触发过。如果是,则将标志位设置为 true,表示对话已经触发过。然后,通过 FindObjectOfType<DialogueManager>() 找到对话管理器的实例,并调用其 StartDialogue() 方法来开始对话。\n\n你可以将上述代码添加到一个游戏对象上,比如一个 NPC 角色,然后在适当的时机调用 TriggerDialogue() 方法来触发对话。在对话触发后,再次调用 TriggerDialogue() 方法将不会触发对话。


原文地址: https://www.cveoy.top/t/topic/pCtV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录