2017-09-25 134 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