Tôi đang phát triển một trò chơi Android và tôi có một câu hỏi về việc lưu trữ các yếu tố trò chơi mà không cần phải thu gom rác.
Trò chơi của tôi cần một bộ sưu tập trong đó các yếu tố trò chơi được lưu trữ theo vị trí x, y (tất cả các yếu tố trò chơi có x, y, chiều rộng và chiều cao). Bộ sưu tập sau đó được gọi là mọi khung hình để truy xuất các yếu tố theo cameraX, cameraY, chiều rộng và chiều cao camera (người dùng có thể cuộn quanh trò chơi).
Thí dụ:
function draw() {
tmp = collection.getElements(tmp,cameraX,cameraY,cameraWidth,cameraHeight);
for(int i = 0; i < tmp.size(); i++) {
tmp.get(i).draw();
}
}
Tôi hiện đang sử dụng lớp Vector để biểu diễn các phần tử bộ sưu tập, nhưng gc cứ bắn mỗi vài phút. Tôi làm tất cả các phân bổ của tôi lên phía trước. Tôi cũng đã sửa đổi hàm getElements để chấp nhận thêm 1 tham số - một vectơ tạm thời (được trả trước) chứa đầy các phần tử và sau đó được trả về.
Tôi nên lưu trữ các yếu tố trò chơi như thế nào để gc không kích hoạt (tôi không bao giờ thích nếu có thể)?
Tôi cũng thêm các yếu tố vào bộ sưu tập trong thời gian chạy, tôi có phải phân bổ chúng trả trước không?