Я начинающий при кодировании. Я уже несколько дней пытаюсь воссоздать популярную мобильную игру «Crossy Road». Пока я пытался создать сценарий создания уровня, у меня возникла проблема. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь создать три объекта в случайном порядке (в этом случае Трава, Дорога и Вода) генерируется только трава. Я был бы очень признателен, если бы кто-нибудь мог сказать мне, почему он постоянно создает экземпляр объекта «Трава». Я воссоздаю игру в Unity 5 fyi. Код выглядит следующим образом:Один и тот же объект запускается снова и снова в C#
using UnityEngine;
using System.Collections;
public class LevelGenerationScript : MonoBehaviour {
public GameObject Water;
public GameObject Road;
public GameObject Grass;
int firstRand;
int secondRand;
int distPlayer = 10;
Vector3 intPos = new Vector3(0,0,0);
void Update()
{
if (Input.GetButtonDown("up"))
{
firstRand = Random.Range(1,4);
if(firstRand == 1)
{
secondRand = Random.Range(1,8);
for(int i = 0;i < secondRand; i++)
{
intPos = new Vector3(0,0,distPlayer);
distPlayer += 1;
GameObject GrassIns = Instantiate(Grass) as GameObject;
GrassIns.transform.position = intPos;
}
if(firstRand == 2)
{
secondRand = Random.Range(1,8);
for(int i = 0;i < secondRand; i++)
{
intPos = new Vector3(0,0,distPlayer);
distPlayer += 1;
GameObject RoadIns = Instantiate(Road) as GameObject;
RoadIns.transform.position = intPos;
}
if(firstRand == 3)
{
secondRand = Random.Range(1,8);
for(int i = 0;i < secondRand; i++)
{
intPos = new Vector3(0,0,distPlayer);
distPlayer += 1;
GameObject WaterIns = Instantiate(Water) as GameObject;
WaterIns.transform.position = intPos;
}
}
}
}
}
}
}
Я был бы очень признателен, если бы кто-нибудь мог сказать мне ошибку. Спасибо!
Есть много вещей, которые могут быть улучшены в этом коде , но в первую очередь убедитесь, что 'if (firstRand == ...' не вложен, т. е. закройте первый 'if' с'} ', затем выполните следующий' if' и т. д. –