Помогите с созданием игры на Unity
|
|
ТимурумиТ | Дата: Среда, 22 Июля 2020, 14:14 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте! Я решил заняться созданием игр и выбрал юнити. По началу всё было хорошо, но всё остановилось, когда дело дошло до создания поля. Сколько раз я не переделывал код, Unity всё время переставал отвечать, когда я запускал игру. Помогите найти ошибку. С C# я до этого не работал. Снизу будет код:
using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine;
public class GameField : MonoBehaviour { public GameObject eField; GameObject[,] Field; public int lenField; void CreateField() { Vector3 StartPoze = transform.position; float XX = StartPoze.x; float YY = StartPoze.y; Field = new GameObject[lenField, lenField]; for (int Y = 0; Y < lenField; Y++) { for (int X = 0; X < lenField; X++) { Field[X, Y] = Instantiate(eField); Field[X, Y].GetComponent<Chanks>().Index = 0; Field[X, Y].transform.position = new Vector3(XX, YY, StartPoze.z); XX++; } XX = StartPoze.x; YY--; } } void Start() { CreateField(); } void Update() { } }
|
|
| |
Storm54 | Дата: Среда, 22 Июля 2020, 14:32 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
|
|
|
| |
DivES | Дата: Среда, 22 Июля 2020, 20:06 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Ну для начала по классике для тех, кто захочет помочь:
Код using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine;
public class GameField : MonoBehaviour { public GameObject eField; GameObject[,] Field; public int lenField;
void CreateField() { Vector3 StartPoze = transform.position; float XX = StartPoze.x; float YY = StartPoze.y; Field = new GameObject[lenField, lenField];
for (int Y = 0; Y < lenField; Y++) { for (int X = 0; X < lenField; X++) { Field[X, Y] = Instantiate(eField); Field[X, Y].GetComponent<Chanks>().Index = 0; Field[X, Y].transform.position = new Vector3(XX, YY, StartPoze.z);
XX++; }
XX = StartPoze.x; YY--; } }
void Start() { CreateField(); }
void Update() {} }
lenField объявил, но значением не инициализировал. Или это вне кода делается?
Цитата ТимурумиТ ( ) Помогите найти ошибку. Кстати нашёл, вот она:
Цитата ТимурумиТ ( ) С C# я до этого не работал. Прежде чем начинать изучение игрового движка, который содержит возможность написания скриптов на каком-либо языке программирования, неплохо было бы разобраться в этом языке.
Сообщение отредактировал DivES - Среда, 22 Июля 2020, 20:13 |
|
| |
ТимурумиТ | Дата: Четверг, 23 Июля 2020, 08:39 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Большое спасибо! Заработало, правда, не совсем правильно. Поле уже приобрело квадратную форму, но операций выполняется намного больше, чем надо. Например, при размере поля 1, отображается так-же поле 1х1, но создаются сотни клонов клетки, а при размере 2 поле уже 5х5 и Unity перестаёт отвечать. Я просто всегда работал на Python, но т.к. Unity работает на С#, пришлось разбираться с ним. Ещё раз спасибо за подсказку!
|
|
| |
drcrack | Дата: Четверг, 23 Июля 2020, 08:44 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Какой обьект находится в поле eField? Ты уверен что на нем нет такого же скрипта, который продолжает создавать свои клоны?
|
|
| |
ТимурумиТ | Дата: Четверг, 23 Июля 2020, 11:30 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Поле создаётся как нужно! Спасибо всем, кто откликнулся!
|
|
| |