| Помогите с созданием игры на 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 |  | был не раз Сейчас нет на сайте | Поле создаётся как нужно! Спасибо всем, кто откликнулся! |  |  |  |  |