玩家在使用StartCoroutine时结结巴巴,我该如何修复它
本文关键字:何修复 结结巴巴 StartCoroutine 玩家 | 更新日期: 2023-09-27 17:59:20
不确定StartCoroutine是否造成了口吃。但是,当禁用脚本而不在Inspector中使用时,使用脚本时会出现停顿。
我使用的是一个附加在ThirdPersonController上的路点脚本。我在ThirdPersoncontroller中添加了Nav MesH Agent。
我在层次结构中还有两个球体作为导航窗口中的航路点,我勾选了复选框,使它们成为"静态导航",我在飞机上也做了"静态导航。
然后烘烤。
在"动画师"窗口中,我使用HumanoidWalk创建了新的"行走"状态,并设置为默认状态,以便所有玩家在运行游戏时都开始自动行走。
球员在两个路点之间走着,但都结结巴巴。如果我不使用脚本,玩家走路很好,其他玩家也一样,我只有在使用脚本时走路很好——它会结结巴巴。
这是航路点脚本:
using UnityEngine;
using System.Collections;
public class Patrol : MonoBehaviour
{
public Transform[] patrolPoints;
private NavMeshAgent agent;
private int dest = 0;
// Use this for initialization
void Start()
{
agent = GetComponent<NavMeshAgent> ();
StartCoroutine (Patrolling ());
}
IEnumerator Patrolling()
{
bool startPatorl = false;
for (int i = 0; i < patrolPoints.Length; i++)
{
while (!startPatorl)
{
if (agent.remainingDistance < 2.5f)
{
i++;
dest = i;
}
if (i >= patrolPoints.Length)
{
i = 0;
dest = 0;
}
agent.destination = patrolPoints[dest].transform.position;
yield return null;
}
}
}
}
我认为问题是您的协同程序循环太多,请尝试更改这一行
yield return null;
这个:
yield return new WaitForEndOfFrame();
或者这个:
yield return new WaitForSeconds(1);