我已经按照Youtube上的教程(https://www.youtube.com/watch?v=_nRzoTzeyxU)了解了如何为游戏创建对话系统。由于我的游戏是平台游戏/ RPG游戏,我目前正在尝试将此系统调整到玩家可以走到NPC的位置,然后按“提交”按钮访问他们的对话框,而不是单击画布/ UI上的按钮。
到目前为止,我已经创建了一个Interactable脚本,允许玩家检测它们是否在NPC配备的不可见球体对撞机的范围内,该NPC正在工作。如果我尝试访问NPC配备的dialogTrigger脚本,我会收到NullReferenceException错误。我想要一些帮助,如何从NPC正确调用dialogTrigger脚本并触发对话事件,因为我对代码很新,到目前为止我只有这个。任何帮助,将不胜感激。
编辑:
NullReferenceException:未将对象引用设置为对象的实例 Interactable.Update()(在Assets / Scripts / Interactable.cs:34)
对话触发器是:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DialogueTrigger : MonoBehaviour
{
public Dialogue dialogue;
public void TriggerDialogue ()
{
FindObjectOfType<DialogueManager>().StartDialogue(dialogue);
}
}
Interactable是:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Interactable : MonoBehaviour
{
private GameObject triggeringNpc;
private bool triggering;
public DialogueTrigger Diag;
void Start()
{
}
void Update()
{
if(triggering)
{
Debug.Log("Within Range");
if (Input.GetButtonDown("Submit"))
{
Debug.Log("Pressed the Interact Button");
Diag.TriggerDialogue();
}
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "NPC")
{
triggering = true;
triggeringNpc = other.gameObject;
}
}
void OnTriggerExit(Collider other)
{
if(other.tag == "NPC")
{
triggering = false;
triggeringNpc = null;
}
}
}
答案 0 :(得分:1)
罪魁祸首将是你的df_1.mask(df_1.lt(0)).fillna({'A':9999,'B':0,'C':-9999})
Out[1440]:
A B C
2017-01-01 00:01:00 9999.0 4.0 7.0
2017-01-01 00:02:00 2.0 0.0 8.0
2017-01-02 00:01:00 3.0 6.0 -9999.0
参考。您是否正确地将Diag
预制件从“层次结构”窗口拖到DialogueTrigger
上的公共字段中?