我在pygame中制作了一个简单的游戏,我意识到我需要一堆标记,数量和各种全球员工。所以我决定定义一个类并使用它:
class Staff():
def __init__(self):
self.modes={'menu':True,'spawning':False,'sprite_change':False}
self.timer=pygame.time.Clock()
self.tick_count=0
在我的游戏循环中,我只给我的所有函数一个变量:
def main_loop():
staff=Staff()
while not done:
update_positions(staff)
clear_background(staff)
draw_sprites(staff)
我知道这种方法很有效(对我而言),但是我想知道这会影响我的游戏速度,可能是我做了一些可怕的事情? 非常感谢您的回答。
答案 0 :(得分:2)
请帮个忙,重新考虑你的设计。
首先,您可能会认为使用全局变量更容易。您可以传递值,您可以从每个函数访问它们,而无需使用参数将它们传递给它们。但是,当涉及调试或发现错误或仅仅在一段时间内查看代码后,全局变量变成了一场噩梦。因为您很容易忘记这些变量会对其他函数或类产生影响的位置。所以,帮自己一个忙,重新考虑你的设计。
“全局”变量的好地方可以是例如主类或函数。一切都从哪里开始。我想有一个循环,有些东西会永久重复。从那里你可以将它传递给特定的类或函数。我不知道你的架构,但根本没有全局变量。
答案 1 :(得分:1)
虽然我根本不懂python,但一般来说全局变量都是个坏主意。我建议使用Singleton模式。虽然这也不是最好的主意,但它肯定比全局更好: Python and the Singleton Pattern
除此之外,你的方法对我来说似乎很好。