Я делаю 2D-игру, вам нужно разместить блоки в игре. У меня работает размещение блоков, однако, предполагается разместить только определенное количество блоков. Я установил значение blockMax, но оно не отвечает на него.
public class SpawnBlock : MonoBehaviour
{
public GameObject block;
public int blockMax;
private int blockNum;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (blockNum < blockMax)
{
Vector3 spawnPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
spawnPos.z = 0f;
GameObject objectSpawn = Instantiate(block, spawnPos, Quaternion.Euler(new Vector3(0, 0, 0)));
blockNum++;
Debug.Log("Number of Blocks = " + blockNum);
}
else if (blockNum >= blockMax)
{
Debug.Log("Reached Block Max");
}
}
}
}
Я попытался изменить порядок операторов if, но это всегда дает один и тот же результат. В окне GameObject кажется, что он умножает количество блоков, появляющихся при каждом нажатии. Кроме того, в журнале консоли он сбрасывает количество зарегистрированных блоков и выводит количество блоков, которые он порождал за это время.
Это журнал консоли, когда макс был установлен на 3, и я нажал 4 раза.
Number of Blocks = 1
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 2
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 1
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Reached Block Max
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:34)
Number of Blocks = 2
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 2
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 1
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Reached Block Max
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:34)
Reached Block Max
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:34)
Reached Block Max
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:34)
Number of Blocks = 2
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 2
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 2
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)
Number of Blocks = 1
UnityEngine.Debug:Log(Object)
SpawnBlock:Update() (at Assets/Scripts/SpawnBlock.cs:29)