#c# #unity3d #procedural-generation #roguelike
#c# #unity3d #процедурная генерация #Рогалик
Вопрос:
Новое в кодировании Unity C #. Я пишу скрипт для достижения процедурной генерации в 2D-игре roguelike. Моя идея состоит в том, чтобы использовать enum для представления 4 направлений (вверх, вниз, влево, вправо), а затем выбрать случайное направление для создания комнаты из сборного. Тогда следующая комната будет сгенерирована тем же методом. Вот мои коды:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoomGenerator : MonoBehaviour
{
public enum Direction { up, down, left, right };
public Direction direction;
[Header("Room Information")]
public GameObject roomPrefab;
public int roomNumber;
public Color startColor, endColor;
[Header("Position Controller")]
public Transform generatorPoint;
public float xOffset;
public float yOffset;
public List<GameObject> rooms = new List<GameObject>();
void Start()
{
for (int = 0; i < roomNumber, int )
{
rooms.Add(Instantiate(roomPrefab, transform.position, Quaternion.identity));
ChangePointPosition();
}
}
void Update()
{
}
public void ChangePointPosition()
{
direction = (Direction)Random.Range(0,4);
switch(direction)
{
case Direction.up:
generatorPoint.position = new Vector3 (0, yOffset, 0);
break;
case Direction.down:
generatorPoint.position = new Vector3 (0, -yOffset, 0);
break;
case Direction.left:
generatorPoint.position = new Vector3 (-xOffset, 0, 0);
break;
case Direction.right:
generatorPoint.position = new Vector3 (xOffset, 0, 0);
break;
}
}
}
Unity сообщает «ошибка CS1525: недопустимый термин выражения ‘int'». Как это возможно? Я что-то пропустил? Пожалуйста, помогите. Заранее спасибо!
Ответ №1:
Вам не хватает имени переменной в вашем цикле for:
for (int i = 0; i < roomNumber, int )
Комментарии:
1. Спасибо! Я указал переменное имя, как вы предложили, хотя первое не показалось проблематичным, и все прошло нормально! Еще раз большое вам спасибо.
2. @VicL Почему бы вам просто не отметить мой ответ как принятый?