Unity3d怎么做到游戏中按下一个按钮,弹出窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d怎么做到游戏中按下一个按钮,弹出窗口相关的知识,希望对你有一定的参考价值。

if (GUI.Button (new Rect (310, 10, 80, 30), "暂停") )

GUI.Window (0, windowPos, mywindow, "暂停窗口");
例如这样这个窗口没有弹出

if (GUI.Button (new Rect (310, 10, 80, 30), "暂停") )
这个是点击button才产生的事件,也就是下面那个窗口只显示了一瞬间,所以没看到。

如果你想实现点击一下窗口出来,再点击一下窗口消失,就需要添加一个bool值。

public bool WindowShow = false;
void OnGUI()

    if (GUI.Button (new Rect (310, 10, 80, 30), "暂停") )
    
        if (WindowShow)
            WindowShow = false;
        else
            WindowShow = true;
    
    if(WindowShow)
        GUI.Window (0, windowPos, mywindow, "暂停窗口");

参考技术A

if (GUI.Button (new Rect (310, 10, 80, 30), "暂停") )
这个是点击button才产生的事件,也就是下面那个窗口只显示了一瞬间,所以没看到。如果你想实现点击一下窗口出来,再点击一下窗口消失,就需要添加一个bool值。

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建互动内容的多平台的综合型游戏开发工具。

    Unity3D是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。

    Unity3D其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要html5)、Windows phone 8和android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。

参考技术B 节省性能的做法是将在加载的时候将窗口移到屏幕之外,点击按钮的时候再将窗口移到到屏幕中央。这样不用销毁窗口也不需要创建窗口

在 Python Tkinter 中按下按钮后如何清除窗口?

【中文标题】在 Python Tkinter 中按下按钮后如何清除窗口?【英文标题】:How do i clear a window after pressing a button in Python Tkinter? 【发布时间】:2018-09-19 18:18:56 【问题描述】:

我目前正在用 python tkinter 为孩子们创建一个数学测验。在这个测验中,我有 3 个不同的“页面”。测验结束时的起始页、测验页和分数页。在我的起始页中,我有三种不同的测验难度供用户选择。一旦单击“EASY”或“HARD”按钮,我如何从开始页面清除窗口的元素,例如我的标签和按钮,以便我可以开始测验?

【问题讨论】:

您在@JhonKey 发布相同问题后发布了此问题,因此应该是重复的,但质量更好,并且由于 JhonKey 没有接受/赞成的答案,因此不能投票支持重复。 我仍在为此苦苦挣扎,所以如果有人有不同的答案,将不胜感激。 【参考方案1】:

如果您将所有小部件放在一个框架中,在窗口内,如下所示:

root=Tk()
main=Frame(root)
main.pack()
widget=Button(main, text='whatever', command=dosomething)
widget.pack()
etc.

然后你可以像这样清屏:

main.destroy()
main=Frame(root)

或者在一个按钮中:

def clear():
    global main, root
    main.destroy()
    main=Frame(root)
    main.pack()
clearbtn=Button(main, text='clear', command=clear)
clearbtn.pack()

清除屏幕。 您也可以像创建root(不推荐)一样创建一个新窗口,或者创建一个toplevel 实例,这更适合创建多个但基本相同的实例。 你也可以使用grid_forget():

w=Label(root, text='whatever')
w.grid(options)
w.grid_forget()

将创建 w,但将其从屏幕上移除,准备好重新使用相同的选项。

【讨论】:

您清除屏幕的方法实际上不起作用。一旦按下了 3 个按钮,我就会尝试删除窗口的某些方面。这是因为我想保留我的背景、照片等以保持相同的 GUI 设计。我知道你可以做pack_forgetplace_forget 等。我只需要关于如何编码的帮助。我发现的一个方法是,一旦我的按钮被点击,就会调用一个函数,并且在这个函数内部会删除这些小部件。但是,由于我现在才在学习,因此很难编码。 @JoeStanford 使用第一个选项(在按钮中),您只需将内容放在要清除的框架中​​,其余的就可以进入根目录。 @JoeStanford 编辑答案以包括grid_forget()【参考方案2】:

您可以使用选项卡式视图并根据所选难度切换选项卡(请参阅 tkinter notebooks https://docs.python.org/3.1/library/tkinter.ttk.html#notebook) 或者,您可以在他们自己的窗口中选择他们选择的难度进行测验。

【讨论】:

啊,我明白了,我不太了解这种方法,但我会研究一下。【参考方案3】:

我建议您使用可以相互叠加的不同框架。看看这个答案Switch between two frames in tkinter。

【讨论】:

感谢您的回答,我刚刚看过它,我理解了这个概念,但是发现我很难将它实现到我的代码中。我会继续努力的,谢谢。

以上是关于Unity3d怎么做到游戏中按下一个按钮,弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

在.NET MVC中按下提交按钮后如何在屏幕顶部显示成功弹出窗口?

在 QtWidgets 的 PyQt5 中按下角落的红色 x 按钮时如何处理/覆盖?

当我在模拟器中按下 Apple TV 游戏手柄按钮时,它们不会触发

在 Python Tkinter 中按下按钮后如何清除窗口?

在 Kivy for Python 中按下按钮时更新标签的文本

在 Kivy for Python 中按下按钮时更新标签的文本