2017-09-25 8 views
0

私は完全に初心者ですが、私は2017.1f1の単一性を使って本からチュートリアルに従おうとしています。しかし、 "//"の後の行に来たときに問題が発生します。なぜなら、Unityには、非スタティックメンバ 'UnityEngine.GameObject.GetComponent()'にアクセスするためにオブジェクト参照が必要であるというエラーが表示されるからです。任意のアイデアを修正する方法は?アップデートレンダリング3D

public class LaunchBall : MonoBehaviour 
    { 

    public Vector3 launchBallHome = new Vector3(0.0f, 0.0f, 0.4f); 
    public float lbSpeed; 
    public bool checkLBToggle = true; 
    private Color lbColor; 
    Renderer rend; 
    bool lbJump; 

    // Use this for initialization 
    void Start() 
    { 

     gameObject.transform.position = launchBallHome; 
     lbSpeed = 0.1f; 
     lbColor = new Color(0.1f, 0.2f, 0.5f); 
// 
     rend = GameObject.GetComponent<Renderer>(); 
     lbJump = true; 
    } 
+0

どのような問題があるようですか?間違いはありますか? – Thalthanas

+4

"廃止されたコマンド"ではありません。それはあなたの単純なタイプミスです。 'GameObject'ではなく、' gameObject' **でなければなりません。 'gameObject'はすでに宣言された変数であり、' GameObject'はクラスです。ここでも、 'GameObject.GetComponent ()'は 'gameObject.GetComponent ()'でなければなりません。単純な誤植としてクローズ。 – Programmer

答えて

-1

GetComponent<T>()はインスタンス関数です。ゲームオブジェクトにコンポーネントを取得する場合は、シーン内のそのオブジェクトのインスタンスでこのメソッドを呼び出します。

あなたの例では、単純に同じゲームオブジェクト上のコンポーネントへの参照を取得したいようです。まあそれよりも単純な何もない、単に「時代遅れ」コマンドについて

rend = GetComponent<Renderer>(); 

を使用私はあなたがすべてのゲームオブジェクトのデフォルトrendererプロパティを使用して混乱していると信じています。それは確かに時代遅れであり、ある時点で削除されます。しかし、それはあなたがそのプロパティを使用しているようには見えません。これは良いことです。

+0

"G"を "g"に置き換えるだけで問題を解決する必要はありません。 OPを助けるためにコメントセクションを使用し、質問を閉じなければなりません。ところで、この質問は今後誰にも役立たないでしょう。 – PassetCronUs

0

@Programmerはあなたがゲームオブジェクトクラスからコンポーネントレンダラを取得しようとしている、

GameObject.GetComponent<Renderer>(); 

を言ったのと同じように。あなたの代わりに何をすべき は次のとおりです。

スクリプトが上の装着されているゲームオブジェクトのコンポーネントレンダラになるだろう
gameObject.GetComponent<Renderer>(); 

注:GameObjectはクラスです。 gameObjectは、現在のスクリプトが添付されているgameobjectを参照する変数です。

+0

"G"を "g"に置き換えるだけで問題を解決する必要はありません。 OPを助けるためにコメントセクションを使用し、質問を閉じなければなりません。ところで、この質問は今後誰にも役立たないでしょう。 – PassetCronUs