Проблема: массивы вертексов взаимоуравниваются

Программирование на Юнити.

Проблема: массивы вертексов взаимоуравниваются

Сообщение Paul Siberdt 21 янв 2010, 15:32

Что-то туплю я....
Создаю два массива вертексов, один - рабочий, другой - резервный, что хранит начальные значения:
Код: Выделить всё
var mesh : Mesh;
var vertices : Vector3[];
var vertices_default : Vector3[];

потом копирую вертекдсату в оба массива:
Код: Выделить всё
   mesh = GetComponent(MeshFilter).mesh;
   vertices_default = mesh.vertices;
   vertices = mesh.vertices;

Далее, делаю в Апдейте кой чего с одним массивом, после которого меш "плывет" вправо:
Код: Выделить всё
   for ( i = 0; i < vertices.length; i++)
      vertices[i].x += Time.deltaTime;
   mesh.vertices = vertices;

Естесственно, с массивом дефолтных значений ничего не происходит и меш никуда не плывет, при:
Код: Выделить всё
   for ( i = 0; i < vertices.length; i++)
      vertices[i].x += Time.deltaTime;
   mesh.vertices = vertices_default;


Код: Выделить всё
vertices = vertices_default;

А вот почему выражение выше, где бы оно ни стояло, превращает два массива в инстансы друг друга, когда изменение одного влечет за собой изменение второго? Это какая-то особенность, о которой я не знаю?
Можно ли возвратить дефолтные значения массиву, не прибегая к перебору его членов?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Проблема: массивы вертексов взаимоуравниваются

Сообщение Paul Siberdt 21 янв 2010, 16:40

Всем спасибо, все разрешилось. Массив же, как объект, не существует, и его имя - это указатель на адрес его первого члена в памяти и, приравнивая адреса, мы оба указателя направляем на один адрес, теряя при этом местообитание второго массива со всеми его драгоценными данными.
Таким образом, редактировать данные массивов необходимо поиндексно.

Да, я понимаю, энто вопрос первого семестра первого курса, только не было у меня таких предметофф :p Закрывайте-убивайте тему :o)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11