c# - 为什么在使用断点时脚本会继续运行并且可以正常工作,但没有断点就不行?
问题描述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
public class SpaceshipCutscene : MonoBehaviour
{
public Transform player;
public Transform[] npcs;
public Transform console;
public Camera FPSCamera;
public Camera mainCamera;
public Animator[] anim;
public float rotationSpeed = 3f;
public float distanceFromConsole;
private bool moveNpc = false;
private float sp = 0f;
private float distance;
// Use this for initialization
void Start()
{
}
private void Update()
{
distance = Vector3.Distance(transform.position, npcs[0].transform.position);
if (moveNpc)
{
// Soldier 2 rotating and looking at player
Vector3 dir = player.position - npcs[0].position;
dir.y = 0; // keep the direction strictly horizontal
Quaternion rot = Quaternion.LookRotation(dir);
// slerp to the desired rotation over time
npcs[0].rotation = Quaternion.Slerp(npcs[0].rotation, rot, rotationSpeed * Time.deltaTime);
var dist = Vector3.Distance(npcs[1].position, console.position);
if (dist < distanceFromConsole)
{
sp += Time.deltaTime;
sp = Mathf.Clamp(sp, 0f, 1f);
anim[1].SetFloat("WalkingSpeed", sp);
}
Vector3 dirToComputer = console.transform.position - npcs[1].position;
dirToComputer.y = 0;
Quaternion rot1 = Quaternion.LookRotation(dirToComputer);
npcs[1].rotation = Quaternion.Slerp(npcs[1].rotation, rot1, rotationSpeed * Time.deltaTime);
}
}
private void OnTriggerExit(Collider other)
{
if (HoriDoorManager.doorLockState == false && distance < 5f)
{
if (other.gameObject.tag == "SpaceshipCutscene")
{
FPSCamera.enabled = false;
mainCamera.enabled = true;
moveNpc = true;
anim[0].SetBool("Aiming", true);
anim[1].SetBool("Walktouse", true);
}
}
}
}
我正在计算玩家和第一个 npc 之间的距离,因为我希望 OnTriggerExit 触发并在特定方向上工作。
在行上使用断点时:
FPSCamera.enabled = false;
它停在这条线上,然后我点击继续,它进入了更新中的其余代码。
但是,如果我不在该行上添加断点,它就不起作用,它什么也不做。不给出错误或异常只是不获取更新中的其余代码。
解决方案
https://docs.unity3d.com/ScriptReference/Collider.OnTriggerExit.html OnTriggerExit 发生在对撞机停止接触后的 FixedUpdate 上
更新发生在每一帧,而 FixedUpdate 发生在计时器上。所以这里的事情可能只是不同步。创建一个断点将确保框架停止,并且当你这样做时一切都可能对齐。
推荐阅读
- ruby-on-rails - Rails 在与日期时间相同的数据类型“period_end”上对多个模型进行排序
- amazon-web-services - AWS Elastic BeanStalk 写入 |/usr/sbin/rotatelogs 时出错
- php - 使用 php-deployer 时如何设置释放限制?
- github - 在 Github 上添加 GPG 密钥后,贡献从个人资料中消失了
- promise - 如何在外部访问promoise变量值
- angular - 创建中间列数未知的 Mat-table
- python-3.x - 添加代理时 Selenium 所需的功能崩溃
- excel - 查找并替换列宏中每出现一次的单词
- cplex - 最少两个约束
- css - 线性渐变 CSS 在 ReactJS 中不起作用