Среда, 18 Декабря 2024, 15:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите с созданием игры на 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
постоянный участник
Сейчас нет на сайте
Код
YY--;
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
был не раз
Сейчас нет на сайте
Поле создаётся как нужно! Спасибо всем, кто откликнулся!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг