Object reference is required to access non-static member?
I'm following a tutorial making my first RTS game, I've came across an error which I can't seem to figure out..
"Assets/Scripts/Player/UserInput.cs(11,36): error CS0120: An object reference is required to access non-static member 'UnityEngine.Transform.root'
What am I doing wrong, sorry for noob question, I've posted the UserInput.cs code below.
using UnityEngine;
using System.Collections;
using RTS;
public class UserInput : MonoBehaviour {
private Player player;
// Use this for initialization
void Start () {
player = Transform.root.GetComponent<Player> ();
}
// Update is called once per frame
void Update () {
}
private void MouseActivity() {
if (Input.GetMouseButtonDown (0)) LeftMouseClick();
else if(Input.GetMouseButtonDown(1)) RightMouseClick();
}
private void LeftMouseClick() {
if(player.hud.MouseInBounds()) {
GameObject hitObject = FindHitObject ();
Vector3 hitPoint = FindHitPoint ();
if(hitObject && hitPoint != ResourceManager.InvalidPosition) {
if(player.SelectedObject) player.SelectedObject.MouseClick(hitObject, hitPoint, player);
else if(hitObject.name!="Ground") {
WorldObject WorldObject = hitObject.transform.root.GetComponent<WorldObject>();
if(WorldObject){
//we knowno selected object
player.SelectedObject = WorldObject;
WorldObject.SetSelection(true);
}
}
}
}
}
private void RightMouseClick() {
if (player.hud.MouseInBounds () && !Input.GetKey (KeyCode.LeftAlt) && player.SelectedObject) {
player.SelectedObject.SetSelection (false);
Player.SelectedObject = null;
}
}
private GameObject FindHitObject() {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.RayCast(ray, out hit)) return hit.collider.gameObject;
return null;
}
private Vector3 FindHitPoint() {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit))
return hit.point;
return ResourceManager.InvalidPosition;
}
}
Answer by doublemax · Oct 06, 2016 at 03:24 PM
player = Transform.root.GetComponent<Player> ();
Transform (with capital T) is a class name.
transform is the Transform instance in the GameObject the script is attached to.
You need the latter version here.
Your answer
Follow this Question
Related Questions
How do you set a variable to a prefab variable? 1 Answer
Error Object reference not set to an instance of an object!!! Help, I am new! 0 Answers
Alternative to FindObjectOfType and calling function from another script 1 Answer
Object reference not set to an instance of an object 1 Answer
Help Simple adding a GameObject to an ObjectField() 1 Answer