階層内には、メインカメラ、ThirdPersonController、Plane、Terrain、Cylinder、Wallがあります。Unity、私は作成したPatroll.csスクリプトをどのように使用しますか?エラーが発生しました
アセットで私はMy Scriptsと呼ばれる新しいフォルダを作成し、Patroll.csと呼ばれる新しいスクリプトをC#で作成しました。このスクリプトは、ThirdPersonControllerキャラクタをmockして、指定された2つのポイントをパッチングしてパトロールします。
エラーがライン上Patroll.csスクリプトである:私はエラーを取得していますThirdPersonControllerにPatrollスクリプトをドラッグする/追加しているときでも
if (agent.remainingDistance < 0.5f)
エラーは、次のとおりです。
MissingComponentException:「ThirdPersonController」ゲームオブジェクトに「NavMeshAgent」は関連付けられていませんが、スクリプトがそのオブジェクトにアクセスしようとしています。 おそらく、ゲームオブジェクト "ThirdPersonController"にNavMeshAgentを追加する必要があります。または、スクリプトを使用する前にコンポーネントがアタッチされているかどうかを確認する必要があります。
これは私がその後、やって、私は
をコンポーネント>ナビゲーション>ナビゲーションメッシュエージェント上でクリックメニューで、その後ThirdPersonController上の階層にクリックされてみました何Patroll.csスクリプトコードusing UnityEngine;
using System.Collections;
public class Patroll : MonoBehaviour {
public Transform[] points;
private int destPoint = 0;
private NavMeshAgent agent;
// Use this for initialization
void Start() {
agent = GetComponent<NavMeshAgent>();
// Disabling auto-braking allows for continuous movement
// between points (ie, the agent doesn't slow down as it
// approaches a destination point).
agent.autoBraking = false;
GotoNextPoint();
}
void GotoNextPoint() {
// Returns if no points have been set up
if (points.Length == 0)
return;
// Set the agent to go to the currently selected destination.
agent.destination = points[destPoint].position;
// Choose the next point in the array as the destination,
// cycling to the start if necessary.
destPoint = (destPoint + 1) % points.Length;
}
void Update() {
// Choose the next destination point when the agent gets
// close to the current one.
if (agent.remainingDistance < 0.5f)
GotoNextPoint();
}
}
です
インスペクタのThirdPersonControllerに、追加されたNav Mesh Agentが表示されます。今
私は同じエラーになってるゲーム実行しています:
MissingComponentExceptionを:そこには「NavMeshAgent」「はThirdPersonController」ゲームオブジェクトに添付されていないが、スクリプトはそれにアクセスしようとしています。 おそらく、ゲームオブジェクト "ThirdPersonController"にNavMeshAgentを追加する必要があります。または、スクリプトを使用する前にコンポーネントがアタッチされているかどうかを確認する必要があります。
「ウィンドウ」>「ナビゲーション」のメニューをクリックして、Bakeをクリックしようとしました。 しかし、それはそれを解決しませんでした。
Patroll.csスクリプトの同じ行に同じエラーがあります。
しかしNav Mesh AgentをThirdPersonControllerに追加しましたが、なぜエラーには添付されていないと言われていますか?エージェントを有効にするにはどうしたらいいですか?
InspectorのPatrollスクリプトにPatrollスクリプトが追加されました。Patrollの部分には、ポイントを追加できますが、Dest PointとAgentはグレーを使用できません。
エージェントでは、次の項目を参照してください。エージェントなし(Nav Mesh Agent)をクリックすることはできません。グレーではありません。
UPDATE:
これは右Patrollスクリプトとナビゲーションメッシュエージェント上ThirdPersonControllerインスペクタのスクリーンショットです。 Patrollで
。
public NavMeshAgent agent;
今すぐThirdPersonControllerは、ナビゲーションメッシュエージェントとインスペクターのPatrollスクリプト持っていると私もpatrollでagaentとして追加:CSスクリプトiは、公開する変数エージェントを変更ThirdPersonController(ナビゲーションメッシュエージェント)が、今すぐエラーが表示されます:
"GetRemainingDistance"は、NavMeshに配置されているアクティブなエージェントでのみ呼び出すことができます。 UnityEngine.NavMeshAgent:get_remainingDistance() Patroll:アップデート()(資産の/私のスクリプト/ Patroll.cs:41)patrollスクリプトで
ライン41は、次のとおりです。
if (agent.remainingDistance < 0.5f)
「NavMeshAgent」が同じゲームオブジェクト「Patroll」に添付されていることを確認してください。 – Programmer
@Programmer添付されている場合、オブジェクトのスクリプトをドラッグしてからyesを意味します。 Nav Meshエージェントと、両方のThirdPersonControllerのスクリプト。 –
@Programmer Patrollスクリプトの右側にThirdPersonControllerインスペクタが表示され、同じオブジェクトにNav Meshエージェントが表示されます。インスペクタのPatrollスクリプトのエージェントが有効になっていないことがわかります。 –