2013-07-09 34 views
6

Đôi khi chúng ta cần giải phóng tài nguyên vô dụng theo cách thủ công trong phát triển trò chơi. Nhưng tôi không chắc chắn đó là tốt hơn giữaTrình tự của GC và dỡ tài sản trong Unity3D

System.GC.Collect(); 
Resources.UnloadUnusedAssets(); 

Resources.UnloadUnusedAssets(); 
System.GC.Collect(); 

AFAIK, cả hai trong số đó là các hoạt động async và có thể không có sự khác biệt.

Vì vậy, câu hỏi của tôi là ...

  1. Có bất kỳ sự khác biệt?
  2. Nếu có, điều nào tốt hơn?
+0

UnloadUnusedAsset không đồng bộ, nhưng thực tế bạn có thể đợi để chờ cho đến khi kết thúc. – Heisenbug

Trả lời

9

Không có sự khác biệt giữa hai loại này.

System.GC.Collect() sẽ cho bộ thu Net thu thập các đối tượng được quản lý bởi mono trong vùng được quản lý, trong khi Resources.UnloadUnusedAssets đề với nội dung (kết cấu, âm thanh và phương tiện khác) được đặt trong vùng gốc. Hai phương pháp làm những điều hoàn toàn khác nhau, vì vậy không có khác nhau mà một trong những sẽ được thực hiện đầu tiên. (Như bạn đã nói, cả hai đều không đồng bộ và bạn chỉ cần đặt cờ để đề xuất hệ thống, đây có thể là thời điểm thích hợp để thu thập.)

Thực tế, không gọi GC tự thu thập, ngoại trừ bạn có một lý do chính đáng. GC của hệ thống sẽ làm việc trong thời gian thích hợp, hầu hết các cuộc gọi để buộc thu gom rác thải không phải là cần thiết như bạn nghĩ.

Nếu bạn muốn biết thêm về bộ nhớ của Unity, bạn có thể tham khảo this blog, có thể cho bạn biết chi tiết.

Các vấn đề liên quan