Python if 语句未按预期工作。代码 'apparently' 调用了两次
Python if statement not working as expected. Code 'apparently' called twice
我有这段代码:
import bge
import GameLogic
import os
os.system("cls")
scene = GameLogic.getCurrentScene()
objects = scene.objects
objectCube = objects["Cube"]
visible = objectCube.visible
if visible == True:
objectCube.setVisible(False, True)
else:
objectCube.setVisible(True, True)
此代码本应切换对象的可见性,但对象消失并在瞬间立即重新出现。它看起来好像只是闪烁。我做错了什么?
另外,不用担心其他变量,它们工作正常。我已经使用一些控制台输出测试了它们。
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 press
和 mouse release
。也许你不区分 press
和 release
并调用代码两次?
问题:鼠标传感器每次点击发送两个信号,一个用于鼠标按下,一个用于鼠标松开。鼠标按下发送正信号,而鼠标抬起发送负信号。
您可以通过按住鼠标按钮进行测试,立方体会消失,当您松开鼠标时它会return。
解决方法:使用传感器的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)
我有这段代码:
import bge
import GameLogic
import os
os.system("cls")
scene = GameLogic.getCurrentScene()
objects = scene.objects
objectCube = objects["Cube"]
visible = objectCube.visible
if visible == True:
objectCube.setVisible(False, True)
else:
objectCube.setVisible(True, True)
此代码本应切换对象的可见性,但对象消失并在瞬间立即重新出现。它看起来好像只是闪烁。我做错了什么?
另外,不用担心其他变量,它们工作正常。我已经使用一些控制台输出测试了它们。
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 press
和 mouse release
。也许你不区分 press
和 release
并调用代码两次?
问题:鼠标传感器每次点击发送两个信号,一个用于鼠标按下,一个用于鼠标松开。鼠标按下发送正信号,而鼠标抬起发送负信号。
您可以通过按住鼠标按钮进行测试,立方体会消失,当您松开鼠标时它会return。
解决方法:使用传感器的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)