【发布时间】:2023-01-11 03:57:52
【问题描述】:
我有一个名为 NPC 的脚本,其中包含一个方法,当我的游戏对象被触发时应该只调用一次但它发生了两次,我怀疑我的另一个脚本(Player)在同一个游戏对象中并继承了同一个类NPC,运行代码,即使它没有激活。这甚至可能吗?
two scripts as components of same game object.
这些是我在检查器上的脚本,默认设置为 SetActive false,当我的游戏开始时,只有其中一个将启用 = true。
public virtual void OnTriggerEnter(Collider other)
{
IInteractable interactable = other.GetComponent<IInteractable>();
if (interactable != null && other.gameObject.CompareTag(gameObject.tag) )
{
if (other.gameObject.CompareTag("blue"))
{
blueBrickList.Add(other.gameObject);
}
else if (other.gameObject.CompareTag("green"))
{
greenBrickList.Add(other.gameObject);
}
else if (other.gameObject.CompareTag("red"))
{
redBrickList.Add(other.gameObject);
}
interactable.Interact();
Debug.Log("interacted");
}
}
这是我的基本抽象类的 OnTriggerEnter 方法。
下面是我在 NPC 和玩家脚本中的内容。
public override void OnTriggerEnter(Collider other)
{
StackParent = stackParent;
RefObject = refObject;
base.OnTriggerEnter(other);
}
正如我之前所说,当游戏开始时只有一个脚本被启用。那么为什么它连续两次输入“interacted”并且还运行两次 Interact 方法。我错过了什么吗?我什至不知道我是否解释得很好。请帮我 :/
【问题讨论】:
标签: c# unity3d inheritance game-development