Trong 2D hoặc 3D, ít nhất một hệ thống thành phần thực thể (ECS) có quyền truy cập vào hệ thống GUI, nếu đó không phải là một phần của cùng một ECS.
Cá nhân, tôi sẽ không trộn lẫn hai. Khả năng sử dụng lại mã cho GUI chỉ thực sự xảy ra ở cấp cao nhất. Đáp ứng với chuột / bàn phím, kết xuất, v.v. Các chức năng mà các nút khác nhau thực hiện hoặc thông tin mà một số danh sách nhất định hiển thị không thực sự là một cái gì đó đủ chung chung để sử dụng lại.
Ví dụ, tôi sẽ tưởng tượng các thành phần cho các thực thể GUI sẽ giống như thế position
, render
và gui
. Trong đó thành phần GUI sẽ xác định loại hành động mà thực thể GUI thực hiện. Tuy nhiên, hành động đó sẽ khá độc đáo và bối cảnh cụ thể. Điều này dẫn đến hệ thống xử lý các thành phần GUI rất lớn và được thiết kế cơ bản để xử lý từng chức năng GUI (tải trò chơi, lưu trò chơi, tìm máy chủ, v.v.). Âm thanh lộn xộn.
Tôi muốn làm một tệp lớp tiêu chuẩn cho mỗi "màn hình" GUI. Có tất cả các chức năng cho màn hình đó ở một nơi (có tham chiếu đến một lớp chức năng chung). Nó gọn gàng hơn và dễ quản lý hơn.
Tuy nhiên, như tôi đã nói, ECS nên có quyền truy cập vào hệ thống GUI. Nó cần có khả năng cung cấp thông tin cho GUI dựa trên các thực thể trong hệ thống của nó. Ví dụ: di chuột qua một đơn vị đồng minh sẽ bật lên một cửa sổ GUI với tất cả thông tin về đơn vị đó. Khi di chuột qua sự thống nhất của kẻ thù sẽ bật lên một cửa sổ GUI với thông tin hạn chế. Bạn có thể không muốn lập trình GUI để biết sự khác biệt giữa hai loại này, bạn muốn yêu cầu thực thể hiển thị thông tin của nó.
Vì vậy, các thực thể vẫn có thể có một số loại thành phần GUI, nhưng chúng sẽ là các thực thể "trong trò chơi", không phải là các thực thể GUI. Thành phần này sẽ sử dụng hệ thống GUI bên ngoài để tạo giao diện GUI của họ.