使用StartCoroutine时播放器是否口吃如何解决?

时间:2016-07-31 20:43:16

标签: c# unity3d unityscript unity5

不确定StartCoroutine是否会造成口吃。但是当禁用脚本不在Inspector中使用它时,在使用脚本时,口吃就会消失。

我使用附加到ThirdPersonController的航点脚本。 我在ThirdPersoncontroller中添加了Nav MesH Agent。

我在Hierarchy中还有两个Spheres作为Naviagtion窗口中的航点,我勾选了复选框以使它们导航静态我也在平面上做了导航静态。

然后烤了它。

在Animator窗口中,我使用HumanoidWalk创建了新状态Walk并且默认设置为所有玩家在运行游戏时开始自动行走。

玩家在航点之间行走,但它都是口吃。 如果我没有使用脚本,那么玩家也可以正常行走,其他玩家只有在使用脚本时才能正常行走。

这是航点脚本:

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;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为问题是你的协程循环太多,试着改变这一行

yield return null;

白衣:

yield return new WaitForEndOfFrame();

或者这个:

yield return new WaitForSeconds(1);