Nez / Monogame: не могу нажимать кнопки, но действия мыши правильно регистрируются - PullRequest
0 голосов
/ 30 ноября 2018

Итак, я не знаю, что я что-то упускаю, но каким-то образом я работаю или смотрю на это, я не могу нажимать какие-либо кнопки на экранах.

Я сделал диалоговое окно с кнопкой по существукак показано в примерах проектов, но когда я пытаюсь нажать кнопку, ничего не происходит.Я попытался запустить OnClick программно, и он работает нормально, я также проверил, что входы мыши были зарегистрированы, и они были.Я в полной растерянности по любой причине, почему это не сработает.

Мой код класса ниже:

public class Interactable : UICanvas
{

    public void interact()
    {
        var skin = Skin.createDefaultSkin();

        var table = stage.addElement(new Table());
        table.center();
        table.setFillParent(true);

        table.add(talk(this.entity.name, "Stay a while and glisten", "Bye!"));

    }


    public Dialog talk(string title, string messageText, string closeButtonText)
    {
        var skin = Skin.createDefaultSkin();

        var style = new WindowStyle
        {
            background = new PrimitiveDrawable(new Color(50, 50, 50)),
            //Dims the background
            stageBackground = new PrimitiveDrawable(new Color(0, 0, 0, 150))
        };

        var dialog = new Dialog(title, style);
        dialog.getTitleLabel().getStyle().background = new PrimitiveDrawable(new Color(55, 100, 100));
        dialog.pad(20, 5, 5, 5);
        dialog.addText(messageText);
        var exitButton = new TextButton(closeButtonText, skin);
        exitButton.onClicked += butt => dialog.hide();
        dialog.add(exitButton);


        return dialog;
    }


}
}

interact() вызывается при запуске к другой сущности и нажатии "E».Из-за этого все отображается правильно, но я не могу нажать на кнопку.

Дополнительно: когда я пытаюсь просмотреть координаты exitButton, они всегда равны 0, независимо от того, что, хотя диалог появляется в середине окна.window

Версия моногейма: 3.7 Версия Nez: 0.9.2

ОБНОВЛЕНИЕ: Похоже, кнопки нажимаются, но их окно щелчка даже почти не совпадает с тем, где кнопки действительно отображаются.

ОБНОВЛЕНИЕ 2: Кажется, проблема в том, где кнопка отображается и где фактическое поле щелчка не совпадают.Я увеличил камеру на 2, и камера также следует моему маленькому персонажу.Диалоговое окно затем появится в X, Y относительно текущего вида камеры, но фактическое окно щелчка появится в X, Y в терминах TiledMap (который не всегда отображается на экране).Не слишком уверен, как обойти это.

1 Ответ

0 голосов
/ 02 января 2019

Так!Проблема, с которой я столкнулся, заключалась в том, что я использовал один рендерер для всего этого (RenderLayerRenderer.) Что я сделал, чтобы исправить это, так это запустил другой рендерер (A ScreenSpaceRenderer).Это позволяет мне использовать его для рендеринга пользовательского интерфейса, и его переменные XY не изменяются, а просто статичны для визуальной области.

Таким образом, я получил два рендера, например:

addRenderer(new RenderLayerRenderer(0,new int[] { (int)RenderLayerIds.First, (int)RenderLayerIds.Second, (int)RenderLayerIds.Third}));
addRenderer(new ScreenSpaceRenderer(1, new int[] { (int)RenderLayerIds.UILayer }));

Использование первого для моей игры рендеринга и нижней части только для вещей HUD!

...