Khi phát triển mod cho Thành phố: Đường chân trời, tôi đã gặp phải vấn đề.Tại sao sự kiện nút giao diện người dùng được thêm này không được gọi?
Hầu hết mã của tôi, theo như tôi có thể nói, hoạt động tốt - nhưng cho đến nay, tôi không phải thử nghiệm nó. Điều này là bởi vì tất cả nên được gọi theo thứ tự khi một nút tôi đã thêm vào giao diện người dùng được nhấp vào. Sự kiện nhấp vào nút này không gọi trình xử lý mà tôi đã gán cho nó.
Đây là nơi tôi có thể tạo các nút:
public class LoadingExtension : LoadingExtensionBase
{
public override void OnLevelLoaded(LoadMode mode)
{
Debug.LogDebugMessage("Adding 'Generate City Report' button to UI");
// Get the UIView object. This seems to be the top-level object for most
// of the UI.
var uiView = UIView.GetAView();
// Add a new button to the view.
var button = (UIButton)uiView.AddUIComponent(typeof(UIButton));
// Set the text to show on the button.
button.text = "Generate City Report";
// Set the button dimensions.
button.width = 250;
button.height = 30;
// Style the button to look like a menu button.
button.normalBgSprite = "ButtonMenu";
button.disabledBgSprite = "ButtonMenuDisabled";
button.hoveredBgSprite = "ButtonMenuHovered";
button.focusedBgSprite = "ButtonMenuFocused";
button.pressedBgSprite = "ButtonMenuPressed";
button.textColor = new Color32(255, 255, 255, 255);
button.disabledTextColor = new Color32(7, 7, 7, 255);
button.hoveredTextColor = new Color32(7, 132, 255, 255);
button.focusedTextColor = new Color32(255, 255, 255, 255);
button.pressedTextColor = new Color32(30, 30, 44, 255);
// Enable button sounds.
button.playAudioEvents = true;
// Place the button.
button.transformPosition = new Vector3(-1.0f, 0.97f);
// Respond to button click.
// NOT GETTING CALLED
button.eventClick += ButtonClick;
}
public void ButtonClick(UIComponent component, UIMouseEventParameter eventParam)
{
Debug.LogWarningMessage("HIGH LOGIC: Beginning report generation.");
string now = DateTime.Now.ToFileTime().ToString();
string filepath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string filename = filepath + "\\CityReport-" + now + ".xlsx";
Output fileCreator = new Output(filename);
fileCreator.GenerateReport();
}
}
Theo documentation Tôi đã làm theo, sử dụng
button.eventClick += ButtonClick;
nên thêm ButtonClick
như xử lý nhấp chuột cho nút. Tuy nhiên, nhấp vào nút không có gì. Thông báo gỡ lỗi khi bắt đầu trình xử lý (thông báo "LOGIC") không được hiển thị (lưu ý: thông báo gỡ lỗi trước đây về cách thêm nút vào giao diện người dùng). Không có thông báo lỗi nào được hiển thị trong bảng điều khiển gỡ lỗi của trò chơi hoặc trong VS.
Tôi cũng đã thử sử dụng new MouseEventHandler(ButtonClick)
, vì tài liệu nội tuyến VS cho tôi biết loại eventClick
là MouseEventHandler
. Điều này không hiển thị bất kỳ lỗi nào trong VS hoặc trò chơi, nhưng cũng không hoạt động.
(Lưu ý: có làofficial documentation, nhưng đó là bên cạnh vô dụng.)
Có ai ở đây có kinh nghiệm với C: S API? Tại sao sự kiện này không được gọi?
Không có công việc nào trong số này, nhưng dù sao cũng cố gắng! – ArtOfCode