1

私は現在、2D ゲームを作成/テストしようとして Unity で遊んでいます。CharacterMotor.playerx内部からアクセスしようとすると、次のエラーが発生し続けますcamerafollow.js

非静的メンバー「playerx」にアクセスするには、タイプ「CharacterMotor」のインスタンスが必要です

ここに私の2つのスクリプトがあります:


camerafollow.js

  #pragma strict

 function Start () {
 transform.position.x =  CharacterMotor.playerx;
 }

CharacterMotor.js

    #pragma strict
    #pragma implicit
    #pragma downcast

    public var playerx : float = transform.position.x;
4

3 に答える 3

2

playerx を static に変更することもできますが、それはやりたいことではないと思います (おそらくプレーヤー オブジェクトは 1 つしかありませんが、これにより、複数の CharacterMotor を使用できなくなります)。このゲームオブジェクトにアタッチされている CharacterMotor のインスタンスを取得したい/取得する必要があると思います。

#pragma strict

function Start () {
    var charMotor : CharacterMotor = gameObject.GetComponent(CharacterMotor);

    transform.position.x =  charMotor.playerx;
}
于 2013-10-18T18:58:16.487 に答える
0

非静的メンバー「playerx」にアクセスするには、タイプ「CharacterMotor」のインスタンスが必要です

上記のエラー メッセージは、何が起こっているかを正確に説明しています。最初に変数のインスタンスを作成せずに変数にアクセスしようとしています。UnityScript != JavaScriptであることに注意してください。

この問題を解決するには、変更するだけです

public var playerx : float = transform.position.x;

public static var playerx : float = transform.position.x;

これで当面の問題は解決しますが、この道を進むことはお勧めしません。データをより適切に整理および構築できるように、言語の他の側面 (クラスなど) を最初に学習することをお勧めします。

参照: http://forum.unity3d.com/threads/34015-Newbie-guide-to-Unity-Javascript-(長い)

于 2013-10-18T18:26:36.310 に答える
0

CharacterMotor はタイプです。タイプのインスタンス化がメモリ内に同時に複数存在する可能性があるため、タイプ名を呼び出すときに、メモリ内のインスタンスを参照していません。

現在のゲームオブジェクトに接続されているタイプのインスタンスを取得するには、これを試してください:

var charactorMotor : CharacterMotor = gameObject.getComponent("CharacterMotor");

これで、そのインスタンス プロパティにアクセスできるようになりました

transform.position.x =  characterMotor.playerx;
于 2013-10-21T18:15:28.957 に答える