使用鼠标在Ursina中正确关闭窗口

3
在过去的几天里,我一直在使用Python中的Ursina引擎玩耍,这个引擎用于创建3D和2D游戏。但是,在制作3D游戏时,我一直面临的问题是无法正确关闭窗口。这是因为鼠标在游戏中被用来控制玩家,所以如果我试图点击关闭按钮,鼠标将始终停留在游戏中。解决这个问题的方法是切换到另一个窗口,将鼠标移动到窗口外部,然后最终点击关闭按钮。但是,对于用户来说,这是很多工作,仅仅是为了关闭窗口。
以下是一些简单的代码示例:
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
import random

game = Ursina()

class Block(Button):
    def __init__(self, position = (0,0,0)):
        super().__init__(parent = scene, position = position, model = 'cube', color = color.white)

for z in range(20):
    for x in range(20):
        block = Block(position = (x, 0, z))

player = FirstPersonController()
game.run()

我认为这个导入语句引起了问题:
from ursina.prefabs.first_person_controller import FirstPersonController 如何在Ursina中正确关闭窗口?

1
我会在游戏内部创建关闭按钮 - 直接在游戏中或作为某个菜单中的“退出”。 - furas
4个回答

6

解决这个问题的方法之一是创建一个按键,让您可以退出游戏。

def input(key):
    if key == 'escape':
        quit()

使用以下代码,您可以通过按下“Escape”键关闭游戏。

4

快速解决方案,按Shift+Q(如果启用了exit_button)。

通常,在第一人称射击游戏中,您会制作暂停菜单并在其中放置一个退出按钮。FirstPersonController隐藏鼠标光标并将其位置锁定在屏幕中心。要撤销此操作,请执行以下操作:

mouse.locked = False
mouse.visible = True

2

我通常按下“Windows”键。按下此按钮会打开Windows菜单,但也会使鼠标可见。

另一个提示是,您可以放置:

window.exit_button.visible = False

在你的代码中,为了更容易关闭窗口。

首先,我不在Windows上,我在Mac上。我知道文档中没有提到兼容Mac,但是我还是尝试了一下,而且它也起作用了。其次,我遇到了以下错误:AttributeError: 'Ursina' object has no attribute 'exit_button' - krmogi
抱歉,我恐怕无法帮助你 :( - Spiceinajar

-1

只需禁用FPC(第一人称控制器): player.disable()

或者

解锁鼠标 mouse.locked = False,这样它就可以移动了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接