Làm cách nào tôi có thể cập nhật có chọn lọc XNA GameComponents?


8

Tôi có một trò chơi 2D nhỏ tôi đang làm việc trong XNA. Cho đến nay, tôi có một con tàu do người chơi điều khiển hoạt động dựa trên lực đẩy vectơ và cực kỳ thú vị khi quay vòng tròn. Tôi đã triển khai điều này dưới dạng DrawableGameComponent và đăng ký nó với trò chơi bằng cách sử dụng game.Components.Add (this) trong hàm tạo đối tượng Ship.

Làm cách nào tôi có thể triển khai các tính năng như tạm dừng và hệ thống menu với triển khai hiện tại của mình? Có thể đặt GameComponents nhất định để không cập nhật không?

Đây có phải là thứ mà tôi thậm chí nên sử dụng DrawableGameComponent không? Nếu không, sử dụng thích hợp hơn cho việc này là gì?

Câu trả lời:


6

Bạn có thể đặt thuộc tính Kích hoạt trên thành phần trò chơi thành false. Trò chơi sẽ không cập nhật nó. Bạn cũng có thể đặt thuộc tính Hiển thị thành sai và trò chơi sẽ không bảo nó vẽ. Nó có thể trở nên lộn xộn khi bạn có rất nhiều thành phần trò chơi. Bạn có thể muốn xem xét sử dụng một số quản lý trạng thái trò chơi và phân chia các thành phần trò chơi của bạn thành các trạng thái riêng biệt.

Bằng cách đó, các thành phần trò chơi là một phần của trò chơi có thể được yêu cầu không vẽ / cập nhật khi trạng thái trò chơi được yêu cầu không cập nhật hoặc vẽ, v.v.

Đây là một ví dụ khá hay về quản lý nhà nước trò chơi: Mẫu quản lý nhà nước trò chơi

Vì vậy, sau đó bạn có thể có PlayScreen của mình (trạng thái có trò chơi trong đó) và có PseScreen xuất hiện trên đầu trang. PlayScreen sẽ không được cập nhật, nhưng nó vẫn sẽ rút ra. (hoặc một cái gì đó thuộc về bản chất đó)


2
Vì vậy, các thuộc tính Kích hoạt và Hiển thị kiểm soát xem các phương thức Update () và Draw () tương ứng sẽ được gọi hay không? Nếu Visible là false, BẤT K code mã nào trong phương thức Draw () sẽ thực thi hay đơn giản là nó không được gọi? Họ có ảnh hưởng gì khác không?
Hóa đơn

3
Họ sẽ không được gọi và họ chỉ ảnh hưởng đến Cập nhật (Đã bật) và Vẽ (Hiển thị).
r2d2rigo

Sau đó, đây chính xác là chức năng tôi đã hy vọng. Cảm ơn.
Hóa đơn
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.