我是一个完全合一的初学者,我试图遵循使用团结2017.1f1的书中的教程。但是,当我来到" //"之后的行时,我遇到了一个问题,因为Unity中出现了一个错误,说明需要一个对象引用才能访问非静态成员' UnityEngine .GameObject.GetComponent()&#39 ;.任何想法如何纠正它?
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 :(得分:0)
正如@Programmer所说,
GameObject.GetComponent<Renderer>();
您正在尝试从GameObject类中获取组件渲染器。 你应该做的是:
gameObject.GetComponent<Renderer>();
将获得附加脚本的游戏对象的组件渲染器。
注意:GameObject是一个类。 gameObject是一个变量,它引用当前脚本附加的游戏对象。
答案 1 :(得分:-1)
GetComponent<T>()
是一个实例函数。如果您想在游戏对象上获取组件,只需在场景中该对象的实例上调用此方法。
在您的示例中,您似乎只想获得对同一游戏对象上的组件的引用。那么没有什么比这简单,只需使用
rend = GetComponent<Renderer>();
关于'过时的命令',我相信你会对每个游戏对象的默认renderer
属性感到困惑。它确实已经过时,并且在某些时候会被删除。但是看起来你并没有使用那个属性,这很好。