- Home /
Does declaring a variable as a reference to a static variable from another class actually create a reference?
I'm fairly new to Unity and I've been creating a menu system. Right now my game just has a few cubes that the user can select using raycasting, but I need to be able to stop that ability when the pause menu opens.
In my pause menu I declared a public static variable to update game is paused and it works, but I found that I have to directly hardcode in the variable I'm calling from my game functionality to stop while paused.
Here's a cutout of the relevant code where the variable isn't updating after initialization:
bool gameIsPaused;
private void Start()
{
bool gameIsPaused = PauseMenu.GameIsPaused;
}
private void Update()
{
if (gameIsPaused == false)
Here's a cutout of code where the script works as desired but the variable either has to be hardcoded in, or called every update like this.
bool gameIsPaused;
private void Update()
{
bool gameIsPaused = PauseMenu.GameIsPaused;
if (gameIsPaused == false)
{
So I guess my question is: do I have to call the variable gameIsPaused every update? Obviously it's not a big deal to go with the second option, but I think it's good to know for the future.
Answer by sacredgeometry · Dec 01, 2020 at 02:29 AM
Bools are structs. Structs are not reference types. They are value types and are passed by copy not reference in almost all situations.
As you have a static reference to that bool (I assume) I would just refrain from storing it in an instance member on this class (there is no need) and instead access/ use it directly.
i.e.
if(!PauseMenu.GameIsPause)
{
// Do this
}
Reading
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types
Your answer

Follow this Question
Related Questions
How would i make an object change color every second? 0 Answers
My GameObject (c#) haven't sprite defined 4 Answers
New to Raycasts, trouble using "hit" 0 Answers
Animator Controller 0 Answers
Not getting debug.log errors from mysql? 0 Answers