Get and Set only work on public variable?
This should be a quick one.
I have an enemy class which stores a reference to the room (with a room being a separate monobehaviour script) its located in. I wanted this to be a private variable with a Get()
and Set()
function so that it doesn't come up in the inspector. For some reason, the reference becomes null if I set it when it's private.
Here is the code where I set the room before I spawn the enemy:
foreach (GameObject e in roomEnemies)
{
e.GetComponent<Enemy>().SetRoom(this);
Instantiate(e, transform.position + Vector3.one * Random.Range(-8f, 8f), Quaternion.identity);
}
and here is the code where I later retrieve the room from the enemy in a different component script on the same object:
private void Start()
{
pathFinding = GetComponent<Enemy>().GetRoom().GetPathfinding();
}
Interestingly, if I set the room reference to be public, it works fine and returns the room without any issues.
I know that I could just set the variable to be public and hide it in the inspector, but I feel like that's sloppy programming and, more than anything, I just want to understand why this is happening.
Thank you programming wizards!
Answer by wewewu · May 16, 2020 at 12:56 PM
You can't do it with get and set, they must also be private if the variable is private
Your answer
Follow this Question
Related Questions
Finding and editing private objects with plugins in c# 0 Answers
How to add gameobjects to a grid? 0 Answers
How do I shorten a gameObject.GetComponent 1 Answer
How do I get the type of a Monobehaviour? 2 Answers
Input Command Issues 0 Answers