除非我在Visual Studio中处于调试模式,否则脚本不会启用

时间:2018-09-13 20:30:49

标签: c# unityscript

当我尝试在调试时启用交互脚本时,只要设置了一个断点,它就可以完美运行。但是,当我在未调试的情况下运行游戏时,大约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;
}

1 个答案:

答案 0 :(得分:0)

这里的问题实际上是由于我的射线广播。由于某种原因,它正在拾取对象及其下方的地形。因此,当我单击某个对象时,有时会使用地形而不是我单击的对象。因此,未选择启用脚本的路径,这就是未启用脚本的原因。