Tôi có một danh sách và tôi muốn gán mảng của nó cho một thuộc tính.Lấy mảng từ danh sách mà không có phân bổ đống
public void BuildMesh(List<Vector3> list){
mesh.vertices=list.ToArray();
}
Bây giờ vấn đề:
- Dự án này là trò chơi và rất khó khăn về thu gom rác thải để thực hiện mặc định của ToArray() không phải là một lựa chọn vì nó tạo ra một mảng mới bên cạnh mảng nội bộ danh sách của .
- Đối tượng lưới là từ một API nguồn đóng và thuộc tính đỉnh là một Vector3 [] vì vậy không thể gán con trỏ cho nó.
Tôi có tùy chọn nào để ngăn phân bổ heap không?
EDIT: Đây không phải là một bản sao
Không thể sử dụng IList<Vector3>
. Lưới là từ một API nguồn đóng và cần Vector3 [] vì vậy tôi không thể gán IList<Vector3>
cho nó.
Bản sao có thể có của [Danh sách tới T \ [\] mà không cần sao chép] (http://stackoverflow.com/questions/4972951/listt-to-t-without-copying) –
@VadimMartynov Đây là một câu hỏi khác. Lưới là từ một API nguồn đóng và cần Vector3 [] vì vậy tôi không thể gán IList cho nó. –
nếu bạn có đối tượng kích thước cố định, chỉ cần không vứt bỏ đối tượng. Thay vào đó chỉ cần đánh dấu đối tượng không sử dụng. Tạo một mảng cố định các đối tượng khi bắt đầu chương trình. Sau đó đánh dấu đối tượng được sử dụng hoặc không sử dụng thay vì tạo và xử lý đối tượng. Không yêu cầu thu gom rác. – jdweng