Khi nào tôi nên đánh dấu GameObjects là Tĩnh?


9

Dưới đây là tài liệu Unity tương ứng .

Theo giải thích của các trang thuyết minh Unity về GameObject tĩnh, đôi khi đánh dấu GameObject là tĩnh có thể ảnh hưởng đến hiệu suất theo cách xấu (ví dụ: Batching tĩnh gây ra việc sử dụng nhiều bộ nhớ hơn) .

Vì vậy, khi nào tôi nên chính xác muốn sử dụng các chức năng này?

Cảm ơn trước.

Chú thích:
Tôi hiện đang phát triển một trò chơi 2D từ trên xuống có rất nhiều Sprites và LineRenderers, nhưng không có đối tượng 3D (thậm chí không phải là một hình tứ giác). Tất cả các GameObject đang được khởi tạo theo thủ tục từ các bản dựng sẵn. LineRenderers được cập nhật từ các kịch bản mỗi khung. Và gần như tất cả các Sprites đang di chuyển liên tục. Đa số Sprites chia sẻ cùng một tài liệu. Tất cả LineRenderers cũng chia sẻ cùng một tài liệu của riêng họ.


1
KHÔNG CHO ĐIỀU TRỊ RỪNG. Chúng tôi đã bị cắn bởi điều xấu đó. Thời gian xây dựng dài, dữ liệu MASSIVE trong cấp độ của bạn. Lưu ý: các tài liệu về điều này đặc biệt kêu gọi rằng bạn không nên sử dụng nó cho rừng. :)
Almo

@Almo Tôi với cậu bé, có thể hiểu được nỗi đau này
Hamza Hasan

Câu trả lời:


6

Không có quy tắc cứng nào về thời điểm bạn nên hoặc không nên làm cho GameObjects tĩnh.

Ít nhất, chỉ làm điều đó cho các đối tượng sẽ không bao giờ di chuyển trong cuộc sống của họ. Nhưng bạn phải biết những gì nó làm để đánh giá liệu bạn nên hay không.

Nó đóng băng lưới vào dữ liệu cảnh, do đó bạn không có chi phí của GameObject cho vật phẩm. Điều này có nghĩa là tăng hiệu suất với chi phí thay đổi dữ liệu cảnh tại thời gian xây dựng và chi phí bộ nhớ thêm cho ứng dụng được xây dựng cuối cùng.

Điều này tốt trong nhiều trường hợp, mặc dù nó có thể gây ra vấn đề, ví dụ như với rừng. Ngoài ra, điều đó có nghĩa là thay vì lưu trữ các câu đối với cây một lần và bản vẽ GPU, nó phải sao chép các câu đó ở mọi nơi. Điều đó làm mất thời gian trong quá trình xây dựng và không gian trong ứng dụng. Ứng dụng của chúng tôi đã tăng từ 3-4 GB lên 300-400 MB khi chúng tôi làm cho cây không tĩnh. Thời gian xây dựng đã đi từ 3-4 giờ đến 1 giờ.

Đã nói tất cả những điều đó! Trò chơi của bạn là 2ngày và có thể sẽ được hưởng lợi từ việc đặt GameObject trong các cảnh thành tĩnh, miễn là bạn không có hàng tấn chúng.


Không làm cho prefab tĩnh làm cho các trường hợp tĩnh quá?
S. Tarık Çetin

Không phải nếu bạn khởi tạo chúng trong thời gian chạy ... Làm thế nào chúng có thể "tĩnh"? Có lẽ tôi sai ... Sẽ kiểm tra.
Almo

2
Tôi vừa xác nhận rằng, nếu prefab được đánh dấu là tĩnh, thì các thể hiện tức thời cũng đang ở trạng thái tĩnh.
S. Tarık Çetin

1

Nếu tôi nói chung thì mọi thứ sẽ không bao giờ di chuyển (thậm chí không phải là pixel) trong toàn bộ vòng đời ứng dụng sẽ được đánh dấu là tĩnh. Thông thường nó rất hữu ích cho việc nướng đèn, nướng đường dẫn navmesh, v.v.

Chà, nếu bạn đang phát triển không có vật thể 3D thì hãy thư giãn và thư giãn. Không cần phải lo lắng về kết xuất thời gian thực, bóng tối hoặc bất kỳ vấn đề nào khác. Thậm chí xóa ánh sáng duy nhất đi kèm với cảnh mới;)

Chà, ai cũng có thể sửa tôi nếu tôi sai ở bất cứ đâu.


3
Điều này thực sự sai đối với những thứ như rừng. Nó làm giảm các ngăn kéo ... nhưng nó đập tất cả các cây vào lưới. Điều này có nghĩa là thay vì lưu trữ các câu đối với cây một lần và bản vẽ GPU, nó phải sao chép các câu đó ở mọi nơi. Điều đó làm mất thời gian trong quá trình xây dựng và không gian trong ứng dụng. Ứng dụng của chúng tôi đã tăng từ 3-4 GB lên 300-400 MB khi chúng tôi làm cho cây không tĩnh.
Almo

@Almo chênh lệch huggggeeeeee
Hamza Hasan

Tôi nghĩ bạn nên làm rõ khi bắt đầu câu trả lời của mình rằng bạn chỉ đề xuất điều này vì đây là trò chơi 2ngày.
Almo

@Almo Cảm ơn bạn, bây giờ tôi nghĩ rằng việc trộn tĩnh là một thứ có hại khi chạm vào, giống như một cái lò mà bạn không thể chắc chắn là nóng hay không. :)
S. Tarık Çetin

@Almo hãy thoải mái chỉnh sửa bro này, nếu cảm thấy cần nó. Đi tiếp
Hamza Hasan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.