Tôi cảm thấy như đây là một vấn đề đơn giản, nhưng tôi gặp vấn đề khi tìm cụm từ tìm kiếm chính xác.
Tôi có một Screen
bao gồm hai Stage
s.
Đầu tiên,
stage
chứa một số đối tượng xuất phátActor
và được thêm vào thông qua tiêu chuẩnstage.addActor(Actor)
. Điều này là cho các đối tượng trò chơi thực tế.Thứ hai,
hudStage
bao gồm mộtTable
diễn viên duy nhất . Bảng này bao gồm một nút cũng như haiLabel
s. Cái này dành cho giao diện người dùng tĩnh / HUD.
Tôi đang xử lý các sự kiện chạm vào các diễn viên tùy chỉnh của mình trong giai đoạn trò chơi như sau:
public class GameObject extends Actor {
private final static String TAG = GameObject.class.getName();
// ...
public GameObject() {
// ...
addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
Gdx.app.log(TAG, "touchDown on GameObject actor: <" + x + "," + y + ">");
return super.touchDown(event, x, y, pointer, button);
}
});
}
Điều này hoạt động hoàn hảo và ghi lại những gì tôi cần. Tuy nhiên, bây giờ tôi muốn cập nhật HUD với thông tin về đối tượng mà người dùng chạm vào.
Màn hình của tôi đã xác định Label
tôi muốn cập nhật (được thêm thông qua hudStage
), nhưng tôi không chắc chắn làm thế nào để đi từ một diễn viên vào stage
màn hình hoặc đến hudStage
nhãn.
public class GameScreen implements Screen {
Stage stage;
Stage hudStage;
// This is the label I want to update.
Label infoLabel;
// ...
}
Tôi biết tôi có thể gọi setText(String)
trên nhãn, nhưng tôi không chắc chắn cách tốt nhất để đánh bóng nhấp chuột lên. Rất nhiều ví dụ có các phiên bản đơn giản hóa trong đó các đối tượng được xác định trong lớp chính (trong trường hợp của tôi GameScreen
) và có thể tham chiếu chúng theo cách đó, nhưng tôi đã phá vỡ chúng.
Tôi bắt đầu xem xét việc tạo ra một sự kiện tùy chỉnh mà diễn viên của tôi có thể kích hoạt và sân khấu sẽ xử lý, nhưng tài liệu thì thưa thớt và tôi không chắc điều này là bắt buộc.
Tôi cũng đã nghĩ đến việc loại bỏ ý tưởng có một nhãn hiệu hudStage
và thay vào đó, diễn viên của tôi sẽ vẽ văn bản nơi HUD sẽ có. Tuy nhiên, từ những gì tôi tiếp tục thấy, tôi nghĩ rằng Cảnh2D là hướng đi đúng đắn cho UI.
Cảm ơn!
EDIT: Những gì tôi đang tìm kiếm:
- Một diễn viên trong
GameScreen.stage
là mục tiêu của mộttouchDown
sự kiện. - Logic trong diễn viên bắn và cập nhật đối tượng.
- Touchdown sự kiện trong kết thúc diễn viên bằng cách cập nhật
infoLabel
trongGameScreen.hudStage
hoặc cập nhật Chuỗi giá trị trongGameScreen
(nếu dễ dàng hơn, tôi sẽ đi tuyến đường này).
GameScreen
. Có vẻ như cửa sổ duy nhất tôi mở là câu trả lời này trên SO về nhiều giai đoạn. Lưu ý rằng máy ảnh của tôi là khác nhau, điều đó khiến tôi nghĩ rằng hai giai đoạn anh chị em sẽ được yêu cầu.