有没有办法在 Ursina 引擎中单击我的"circle"时显示文本?



我正在制作一个问答游戏,你可以点击答案等。

这是代码:

from ursina import *
app = Ursina()
class Option(Button):
def __init__(self):
super().__init__(
model = 'circle',
texture = 'brick',
color = color.blue,
scale = 0.3)

demo_button = Option()
app.run()

,当它被点击时,我想要文本显示2秒。

使用input()来检测按钮上的点击是一种愚蠢的,Button被用来处理它自己。在Button的click上执行函数,使用on_click方法:

from ursina import *
app = Ursina()
class Option(Button):
def __init__(self):
super().__init__(
model = 'circle',
texture = 'brick',
color = color.blue,
scale = 0.3)
def on_click():
doSomething()

demo_button = Option()
app.run()

你可以在类

中声明一个输入动作
def input(self, key):
if self.hovered:
if key == 'left mouse down':
popup_text = Text("Hello, World!")
destroy(popup_text, delay=.3)

在这种情况下,我设置了输入事件,这样当玩家用鼠标悬停并点击鼠标右键时,它就会显示文本并销毁它,但正如你所看到的,在destroy方法中有一个延迟设置。

同样,如果你想让文字变大你可以做一些像

这样的操作popup_text = Text("Hello, World!", scale=1)

你可以这样做

from ursina import * 
app = Ursina()
def Click():
txt = Text(text="Test",scale = 3,position = (-.05,.05,0))
destroy(txt,delay=2)
Option = Button(model="circle",texture = 'brick',color = color.blue,scale = 0.3)
Option.on_click=Click
app.run()

或者这个如果你真的需要一个类

from ursina import *
app = Ursina()
class Option(Button):
def __init__(self):
super().__init__(
model = 'circle',
texture = 'brick',
color = color.blue,
scale = 0.3)
def on_click(self):
if self.hovered:
txt = Text(text="test num 3",scale =3,position=(-.15,.05,0))
destroy(txt,delay=2)

demo_button = Option()
app.run()

最新更新