当我尝试在调试时启用交互脚本时,只要设置了一个断点,它就可以完美运行。但是,当我在未调试的情况下运行游戏时,大约50%的时间无法启用脚本。 Interact是NPC和MonsterAttack脚本的基类。我只有NPC和MonsterAttack脚本附加到物理游戏对象上。
void Update ()
{
if (Input.GetMouseButton(0) && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
{
if (interactedObject != null && interactedObject.GetComponent<Interact>() != null)
{
interactedObject.GetComponent<Interact>().enabled = false;
}
Interact.rotate = false;
rayHit = GetInteraction();
}
}
//Get interaction with clicked object
private RaycastHit GetInteraction()
{
//Get the mouse clicked position
Ray interactionRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit interactionInfo;
if (Physics.Raycast(interactionRay, out interactionInfo, Mathf.Infinity))
{
Debug.DrawRay(interactionRay.origin, interactionInfo.point, Color.red);
interactedObject = interactionInfo.collider.gameObject;
if (interactedObject.tag != "NPC" && interactedObject.tag != "Monster")
{
//Move somewhere on the terrain
playerAgent.stoppingDistance = 0f;
playerAgent.SetDestination(interactionInfo.point);
}
else
{
//IT FAILS HERE
interactedObject.GetComponent<Interact>().enabled = true; //<--------
//Interact with an Object, NPC, Item, Monster
interactedObject.GetComponent<Interact>().MovetoInteraction(playerAgent);
}
}
return interactionInfo;
}
答案 0 :(得分:0)
这里的问题实际上是由于我的射线广播。由于某种原因,它正在拾取对象及其下方的地形。因此,当我单击某个对象时,有时会使用地形而不是我单击的对象。因此,未选择启用脚本的路径,这就是未启用脚本的原因。