2016-07-23 3 views
0

階層内には、メインカメラ、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で

Screenshot

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) 

Screenshot

+0

「NavMeshAgent」が同じゲームオブジェクト「Patroll」に添付されていることを確認してください。 – Programmer

+0

@Programmer添付されている場合、オブジェクトのスクリプトをドラッグしてからyesを意味します。 Nav Meshエージェントと、両方のThirdPersonControllerのスクリプト。 –

+0

@Programmer Patrollスクリプトの右側にThirdPersonControllerインスペクタが表示され、同じオブジェクトにNav Meshエージェントが表示されます。インスペクタのPatrollスクリプトのエージェントが有効になっていないことがわかります。 –

答えて

1

Patrollスクリプトコンポーネントにオブジェクトを含むNavMeshAgentコンポーネントを割り当てていません。

enter image description here

エージェント変数フィールドには、パブリックまたはプライベートシリアライズする必要があります。

+0

私は変数を公開に変更しました。今、ThirdPersonControllerにはPatroll.csというスクリプトとNav Mesh Agentがあります。インスペクタでPatrollをAgent:ThirdPersoncontroller(Nav Mesh Agent)に追加しましたが、ゲームを実行しているときに "GetRemainingDistance"というエラーが表示されるのは、NavMeshに配置されているアクティブなエージェントに対してのみ呼び出すことができます。 Patroll.csスクリプトの41行目です:if(agent.remainingDistance <0.5f) –

+0

シーン内でメッシュまたは地形をクリックし、ウィンドウタブでナビゲーションを選択...インスペクタの横にナビゲーションレイアウトが表示されます。 ..ナビゲーションのタブにちょうど焼くと言うボトムボタンをクリックして...そしてあなたは終わった! – ARTAGE

+0

同じerorr "GetRemainingDistance"は、NavMeshに配置されているアクティブなエージェントでのみ呼び出すことができます。奇妙な。私はthirdpersoncontrollerのインスペクタを示す新しいスクリーンショットで質問を更新しました。私は地形をクリックした後にそれを焼きましたが、同じエラーです。 –

関連する問題