Updating a global variable from another script
Okay, I am very confused. I have the following code:
public class DeployBlocks : MonoBehaviour
{
public GameObject blockPrefab;
public float respawnTime = 1.0f;
private int difficulty = 1;
private int blocks = 0;
private int dropHeight = 20;
private int maxHeightDiff = 2;
private int[,] heights = new int[10, 10]; //Array with all the heights.
private GameObject[,] blocs = new GameObject[10, 10];
private GameObject[,] blocs_new = new GameObject[10, 10];
// Start is called before the first frame update
void Start()
{
StartCoroutine(blockWave());
Application.targetFrameRate = 100;
}
// Update is called once per frame
void Update()
{
}
public int getHeight(int x, int z)
{
return heights[x, z];
}
public void updateBlock(float fx_par, float fz_par)
{
float fx = fx_par + 4.5f;
float fz = fz_par + 4.5f;
int x = (int)fx;
int z = (int)fz;
blocs_new[x, z] = blocs[x, z];
heights[x, z] = heights[x, z] + 1;
}
And I call the function updateBlock from another script. If I add Debug.Log(heights[x, z]) in the updateBlock function, it shows that it has, indeed, gone from 0 to 1. However, if I call getHeight for the same x and z, it just returns 0. I've also tried printing all the array in that function, and it just returns 0 for everything, even after calling updateBlock and printing from there. Why doesn't the variable update properly?
The same happens to me with blocs and blocs_new, and I don't know why it doesn't update.
Your answer
Follow this Question
Related Questions
[SOLVED] What to do instead of GameObject.Find("Somethingmoving").transform every frame? 1 Answer
Why after changing variable s value it returns at the original value? 0 Answers
Update function not being called only on one mobile device. 0 Answers
Counting Activation of specific panels, not updating Variable? 2 Answers