-1
不確定StartCoroutine是否會導致口吃。但是,當禁用腳本不在檢查器中使用它時,使用它發生的腳本時,口吃不見了。使用StartCoroutine時,玩家會口吃,我該如何解決它?
我正在使用附加到ThirdPersonController的航點腳本。 我添加到ThirdPersoncontroller也導航MesH代理。
我在層次結構也有兩個球是在Naviagtion窗口,我選中的複選框航點,使它們的靜態導航也是我做靜態導航在飛機上。
然後烘烤它。
在動畫窗口,我創建使用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;
}
}
}
}
您的程序進入無限循環,因爲'startPatorl'永遠不會設置爲'在'巡邏()'函數的任何位置TRUE'。 while循環將在'startPatorl'爲'false'時運行。你應該在某處設置'startPatorl'。我不知道你在做什麼,因此不知道該在哪裏做,但這是問題所在。 – Programmer
@Programmer我正在做的是在路點之間移動玩家。腳本錯了(不是startPatrol整個腳本邏輯)? –
是的。只是看着它是錯的。它沒有凍結的唯一原因是因爲這是一個協同函數,並且在while循環內有'yield return null;'。沒有這個,它會凍結你的遊戲。除此之外,我不理解其餘的代碼......你有'patrolPoints'存儲'路點',你想把你的播放器從'patrolPoints [0]'移動到'patrolPoints'的長度? – Programmer