Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 26.06.2016, 08:32   #1
SOmar
AnyKey`щик
 
Регистрация: 15.09.2015
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос SetHeights()

PAX выручай башка ща лопнет!

public void SetHeights(int xBase, int yBase, float[,] heights);

Есть три файла:
asset_cor_x.txt содержит 500 int
asset_cor_y.txt содержит 25 000 int
asset_height.txt содержит 25 000 float

этот код поднимает террайн в определенных координатах взятых из файлов.
hcor = new float[10,500];
public void TerrainDataSetHeights()	{
		readX = File.ReadAllText (assetX).Split ('|');
		readY = File.ReadAllText (assetY).Split ('|');
		readH = File.ReadAllText (assetH).Split ('|');


		for (int x = 0; x < 10; x++)	{
			Int32.TryParse(readX[x], NumberStyles.Any, new CultureInfo("en-US"), out heightX);
			//countX++;
			for (int y = 0; y < 50; y++) {
				Int32.TryParse(readY[y], NumberStyles.Any, new CultureInfo("en-US"), out heightY);
				float.TryParse(readH[countY], NumberStyles.Any, new CultureInfo("en-US"), out heightH);

				hcor [heightX,heightY] = heightH;
				td.SetHeights (heightX, heightY, hcor);
				countY++;
			}
		}
Пока второй аргумент hcor равен 500 всё норм но если поставить 510 получаем
ArgumentException: X or Y base out of bounds. Setting up to 514x10 while map size is 513x513

мне же надо внести 25 000 данных как?!
(Offline)
 
Ответить с цитированием
Старый 01.07.2016, 05:51   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,494
Написано 2,952 полезных сообщений
(для 5,214 пользователей)
Ответ: SetHeights()

Во-первых ты каждую итерацию цикла устанавливаешь массив hcor = new float[10,500]; это уже ошибка, сначала ты должен его считать, а потом устанавливать. И устанавливаешь ты его в какие-то непонятно какие координаты, которые прочитаны из файлов. Я бы как минимум считал сначала все данные в массив размером 513х513 как тебе предлагает ошибка, а потом один раз установил.

PS: создавать в каждой итерации цикла культуру (new CultureInfo("en-US")) это же ад, создай ее перед циклами и запиши в какую-то переменную, потом передавай в методы парсинга.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 19:30.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com