2

私のスクリプトはキャラクターコントローラーに接続されています。

そして、私は宣言しました、

public Camera camera;

クラスで。私が与えた更新機能では、

if(Input.GetMouseButtonDown(0)){ 
Ray ray = camera.ScreenPointToRay(Input.mousePosition); 
if (Physics.Raycast (ray, out hit3, 400.0F)){
    print(hit3.collider.gameObject.name); 
}
}

しかし、私はエラーが発生しています

"UnassignedReferenceException: 
The variable camera of 'characterScript' has not been assigned.
You probably need to assign the camera variable of the 
characterScript script in the inspector."

良い解決策を教えてください。

前もって感謝します。

4

3 に答える 3

3

Cameraクラスの次の静的変数を使用して、どこからでもカメラにアクセスできます。

Camera.current現在レンダリングしているカメラ。

Camera.main「MainCamera」とタグ付けされた最初の有効なカメラ。

Camera.allCamerasシーン内の有効なすべてのカメラを返します。

それを探す必要はありません。Cameraクラスがインスタンスを追跡します:)

hth。

ジェローム

于 2013-02-15T11:48:10.310 に答える
3

UI の変数にドラッグ アンド ドロップするか、スクリプトにこのビットを追加して、起動時に自動的に実行します。

void Start()
{ 
    camera = (Camera) GameObject.FindObjectOfType(typeof(Camera));
}

キャストは冗長である可能性があります。また、カメラが 1 つだけある場合にのみ正しく機能します。

于 2013-02-14T11:59:54.557 に答える
2

カメラを初期化していません。unity3D の UI から設定する必要があります。カメラをパブリック パラメータにドラッグ アンド ドロップするだけです。

于 2013-02-14T11:52:45.267 に答える