Python if语句无法按预期工作。代码“显然”被称为两次

时间:2015-11-06 11:23:19

标签: python if-statement blender

我有这段代码:

this.monthCalendar1.Text

此代码应该切换对象的可见性,但对象会消失并立即重新出现。它看起来好像只是闪烁。我做错了什么?

另外,不要担心其他变量,它们工作正常。我使用一些控制台输出测试了它们。

2 个答案:

答案 0 :(得分:2)

问题:鼠标传感器每次点击发送两个信号,一个用于鼠标按下,一个用于鼠标按下。鼠标向下发送正信号,而鼠标向上发送负数。

您可以通过按住鼠标按钮进行测试,立方体将消失,当您释放鼠标时它将返回。

解决方案:使用传感器的positive属性来确定这是鼠标向上还是向下事件。

import bge
import GameLogic
import os


os.system("cls")
scene = GameLogic.getCurrentScene()
objects = scene.objects
objectCube = objects["Cube"]
visible = objectCube.visible

# get the mouse sensor
cont = bge.logic.getCurrentController()
sens = cont.sensors['Mouse']
if sens.positive: # positive means a down button event
    if visible == True:
        objectCube.setVisible(False, True)
    else:
        objectCube.setVisible(True, True)

答案 1 :(得分:1)

setVisible的第二个参数设置游戏子对象的可见性。您将其设置为True。在这种情况下,您隐藏了主对象并显示了子对象。

关注http://bgepython.tutorialsforblender3d.com/GameObject/setVisible recursive参数并不意味着recursive show/hide all children elements,而是set the visibility to children elements to True/False

关注http://www.tutorialsforblender3d.com/BGE_Python/Sensors/Mouse/MouseSensor_LButton_getButtonStatus.html mouse event后发送两个事件mouse pressmouse release。也许您不区分pressrelease并且两次调用代码?