我正在使用pygame开发游戏,我想在加载资源时创建加载屏幕。加载屏幕有动画,因此加载屏幕和资源加载应该同时进行。
请考虑以下代码:
class Game:
def __init__(self):
self.loading_screen()
self.load_assets()
def loading_screen(self):
# do something while load_assets() is running
def load_assets(self):
# load all assets needed
我已尝试过多处理过程,但我不知道如何在load_assets()运行时保持loading_screen()不冻结运行。
另外,我已经尝试过线程,但是python没有同时运行线程,所以,在某些时候,loading_screen()会冻结。 (这可能是错的,但这在游戏中被观察到了)
有些帮助吗? 谢谢大家
答案 0 :(得分:0)
线程适用于此。无论如何,在多用户系统上什么都没有完全同时运行。
import threading
from time import sleep
class Game:
def __init__(self):
self.loading_screen()
def loading_screen(self):
t = threading.Thread(target=self.load_assets)
t.daemon = True
t.start()
while t.isAlive():
sleep(0.1)
print("loading screen")
print ("assets done, ready to proceed now")
def load_assets(self):
i = 0
while i < 10:
print("loading assets")
i += 1
sleep(1)
g = Game()
print("done")
这会将您的资产加载到一个线程,然后在主线程中输入loading_screen()
。这只是打印消息以证明它们都是并行运行的。