Страница 1 из 1

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

СообщениеДобавлено: 21 янв 2010, 15:32
Paul Siberdt
Что-то туплю я....
Создаю два массива вертексов, один - рабочий, другой - резервный, что хранит начальные значения:
Код: Выделить всё
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;

А вот почему выражение выше, где бы оно ни стояло, превращает два массива в инстансы друг друга, когда изменение одного влечет за собой изменение второго? Это какая-то особенность, о которой я не знаю?
Можно ли возвратить дефолтные значения массиву, не прибегая к перебору его членов?

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

СообщениеДобавлено: 21 янв 2010, 16:40
Paul Siberdt
Всем спасибо, все разрешилось. Массив же, как объект, не существует, и его имя - это указатель на адрес его первого члена в памяти и, приравнивая адреса, мы оба указателя направляем на один адрес, теряя при этом местообитание второго массива со всеми его драгоценными данными.
Таким образом, редактировать данные массивов необходимо поиндексно.

Да, я понимаю, энто вопрос первого семестра первого курса, только не было у меня таких предметофф :p Закрывайте-убивайте тему :o)