因此,我不知道我是否丢失了某些东西,但是无论如何以某种方式工作或研究它,我都无法单击屏幕上的任何按钮。
我制作了一个带有按钮的对话框,基本上如示例项目所示,但是当我尝试单击该按钮时,什么也没有发生。 我尝试以编程方式触发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;
}
}
}
在运行到另一个实体并按“ E”时,将调用interact()
。
这会导致所有内容正确渲染,但我无法单击按钮。
另外:
当我尝试查看exitButton
坐标时,尽管对话框出现在窗口中间,但它们始终为0
Monogame版本:3.7 Nez版本:0.9.2
更新: 因此,似乎按钮是可单击的,但是其单击框甚至与真正呈现按钮的位置几乎不对齐。
UPDATE2: 似乎问题在于呈现按钮的位置与实际单击框的位置不同。 我将相机放大了2倍,相机也跟随了我的小角色。对话框将出现在相对于当前摄像机视图的X,Y处,但实际的单击框是根据TiledMap(并不总是显示在屏幕上)出现在X,Y处。 不太确定如何解决此问题。
答案 0 :(得分:0)
所以!我遇到的问题是我整个过程都使用一个渲染器(RenderLayerRenderer。)要解决此问题,我要做的就是启动另一个渲染器(ScreenSpaceRenderer)。这使我可以使用它来呈现UI,并且它的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东西中使用底部!