2015-06-13 82 views
-1

我希望每個被實例化時這個類來渲染一個網格,但我得到的錯誤,錯誤引用非靜態成員與實例化對象

CS0120:一個對象引用必須訪問非-static成員 `UnityEngine.GameObject.GetComponent(System.Type的)」

所以我實例化渲染的對象叫雷德和設置等於非靜態成員,但我仍然得到錯誤?任何幫助將不勝感激,因爲我已經研究了幾個小時,但仍然無法弄清楚。

using UnityEngine; 
using System.Collections; 

public class SetGrid : MonoBehaviour { 

    public int x = 1; 
    public int y = 1; 

    void Start() 
    { 
     Renderer Rend = GameObject.GetComponent<Renderer>().material.mainTextureScale = new Vector2 (x, y); 

    } 
} 
+1

提供的代碼示例不能編譯。請發佈您的問題的MVCE。 –

回答

0

問題不在於Rend對象,它是由GetComponent方法是非靜態的事實引起的。這意味着你需要實例化一個GameObject對象並使用它來調用GetComponent。

+0

謝謝你的幫助。 –

1

我假設這個腳本是你的網格遊戲對象的一部分,它也有一個Renderer類型的組件。

正確的語法縮放Renderer的紋理以下內容:

public class SetGrid : MonoBehaviour { 

    public int x = 1; 
    public int y = 1; 

    void Start() 
    { 
     // Get a reference to the Renderer component of the game object. 
     Renderer rend = GetComponent<Renderer>(); 
     // Scale the texture. 
     rend.material.mainTextureScale = new Vector2 (x, y); 
    } 
} 

錯誤消息被拋出,因爲你試圖調用GetComponent類型的GameObject,而不是一個實例GameObject。腳本本身已經在GameObject的上下文中,這意味着您可以從非靜態方法訪問組件GetComponent

0

GameObject.GetComponent更改爲gameObject.GetComponent,以便引用此MonoBehaviour腳本所屬的gameObject

或者你甚至可以不使用gameObject.GetComponent,只使用GetComponent本身。

有關詳細信息,請參閱MonoBehaviour繼承的成員。

+0

謝謝你的幫助 –

相關問題