0

Unity 3D と unityscript をプログラミングに使用しています。

スクリプト CharacterMotor.js が組み込まれた First Person Controller があります。そのスクリプトには、最初に宣言された「canControl」という変数があり、これはブール値であり、First Person Controller が入力に応答するかどうかを制御します。

立方体のような別のオブジェクトに添付されたスクリプトからそのブール値を変更できるようにしたいと考えています。

キューブに添付されたスクリプトで現在行っていることは次のとおりです。

#pragma strict

var stop : GameObject;

function Start () {
}

function Update () {
    stop.GetComponent("CharacterMotor").canControl = false;
}

First Person Controller オブジェクトをリファレンス インスペクター サイドバーの stop 変数にドラッグしました。

これが私が得ているエラーです:

Assets/test.js(15,45): BCE0019: 'canControl' is not a member of 'UnityEngine.Component'. 

それで、何らかの理由で CharacterMotor.js スクリプト内の変数 canControl を参照できないようです。

私は全体を見渡しましたが、私が違うことをしていることを見つけることができません。あなたはなにか考えはありますか?

4

2 に答える 2

1

2つの小さな問題:

まず、GetComponentは常にタイプ'Component'のオブジェクトを返します。canControlはComponentで定義されておらず、CharacterMotorで定義されています。これは、戻り値をCharacterMotorにキャストする必要があることを意味します。

次に、GetComponentは、探しているコンポーネントを使用してGameObjectで呼び出す必要があります。これを行うために私が見つけた最も簡単な方法は、FindGameObjectWithTagを使用することです。

結果は次のとおりです(First PersonControllerに「Player」というタグがあると想定しています)。

var stop : CharacterMotor;

function Start () {
    stop =(CharacterMotor)GameObject.FindGameObjectWithTag("Player").GetComponent("CharacterMotor");
}

function Update () {
    stop.canControl = false;
}
于 2013-02-24T04:26:45.643 に答える
0

これを試して:

function Update () {
    stop.GetComponent("CharacterMotor");
    canControl = false;
}

Unity のことはよくわかりませんが、canControlおそらく に接続できませんGetComponentcanControlが独自の変数である場合、私の方法はうまくいくはずです。GetComponent変数を取得するだけです。それは関数に属しているという意味ではありませんGetComponent

私は完全に間違っているかもしれませんが。それは、コードを読んだときにわかることです。お役に立てば幸いです。

于 2013-02-05T03:04:29.560 に答える