У меня есть список, и я хочу назначить его массив свойству.Получить массив из списка без выделения кучи
public void BuildMesh(List<Vector3> list){
mesh.vertices=list.ToArray();
}
Теперь проблемы:
- Проект игра и очень жесткий по сбору мусора поэтому реализация по умолчанию ToArray() не вариант, поскольку он создает новый массив рядом внутреннего массив Листа ,
- Мешевый объект из API с закрытым исходным кодом, а свойство vertices является Vector3 [], поэтому он не может назначить ему указатель.
Есть ли у меня возможность предотвратить выделение кучи?
EDIT: Это не дубликат
Невозможно использовать IList<Vector3>
. Сетка из API с закрытым исходным кодом и требует Vector3 [], поэтому я не могу назначить ему IList<Vector3>
.
Возможный дубликат [Список на T \ [\] без копирования] (http://stackoverflow.com/questions/4972951/listt-to-t-without-copying) –
@VadimMartynov Это еще один вопрос. Сетка из API с закрытым исходным кодом и требует Vector3 [], поэтому я не могу назначить IList. –
Если у вас есть объект фиксированного размера, просто не удаляйте объект. Вместо этого просто пометьте объект неиспользуемым. Создайте фиксированный массив объектов в начале программы. Затем отметьте используемый или неиспользуемый объект вместо создания и удаления объекта. Сбор мусора не требуется. – jdweng