Python 2.7 Pygame会在屏幕外显示一个矩形的blit精灵吗
我目前正在做一个2D俯视空间探索游戏。我有相当多的行星,由于地图的跨度比显示的要大得多,我最终在显示区域外发现了很多行星精灵。目前,我假设Pygame不会在屏幕上显示精灵(据我所知,显示和绘制到表面会大大降低速度),这是真的吗?或者我需要在blit调用之前添加一个条件来检查精灵是否位于显示器内?我问这个问题的原因是,我的游戏的运作方式是,每次发现一颗行星,就会产生两颗新的行星。。。这意味着游戏可能变得相当大,而且可能非常缓慢Python 2.7 Pygame会在屏幕外显示一个矩形的blit精灵吗,python-2.7,pygame,blit,pygame-surface,Python 2.7,Pygame,Blit,Pygame Surface,我目前正在做一个2D俯视空间探索游戏。我有相当多的行星,由于地图的跨度比显示的要大得多,我最终在显示区域外发现了很多行星精灵。目前,我假设Pygame不会在屏幕上显示精灵(据我所知,显示和绘制到表面会大大降低速度),这是真的吗?或者我需要在blit调用之前添加一个条件来检查精灵是否位于显示器内?我问这个问题的原因是,我的游戏的运作方式是,每次发现一颗行星,就会产生两颗新的行星。。。这意味着游戏可能变得相当大,而且可能非常缓慢 谢谢不,它不会显示图像。如果你试图在屏幕外闪现一些东西,Pygame就
谢谢不,它不会显示图像。如果你试图在屏幕外闪现一些东西,Pygame就会忽略它。除非有大量的对象,否则它不应该减慢你的程序,因为pygame需要一小部分时间来确定图像是否在屏幕之外。不过这不是什么大不了的事 意识到我的答案缺乏证据(这很糟糕,mkay…),所以我做了一些测试来证明我的观点。我测试了3个条件:在屏幕上闪烁,在屏幕外闪烁,什么也不做。它们花费的秒数无关紧要,因为它们是基于我的电脑(一台5年的笔记本电脑)的性能,所以要寻找它们之间的因素;对每个人来说都应该是相似的 5000磅
- 内部:0.033265519510593734秒
- 外部:0.002402466401003767秒
- 无:0.000237229449441657秒
- 内:3.639024520190433秒
- 外部:0.23328839021967726秒
- 无:0.023549600850092247秒
- 内:360.48034191795153秒
- 室外:23.317473949049596秒
- 无:2.3507101910654455秒
setup = """
import pygame
pygame.init()
screen = pygame.display.set_mode((100, 100))
image = pygame.Surface((100, 100))
"""
statement1 = """
for i in range(5000):
screen.blit(image, (0, 0))
"""
statement2 = """
for i in range(5000):
screen.blit(image, (200, 200))
"""
statement3 = """
for i in range(5000):
pass
"""
from timeit import timeit
num_of_times = 10000
inside = timeit(stmt=statement1, setup=setup, number=num_of_times)
outside = timeit(stmt=statement2, setup=setup, number=num_of_times)
nothing = timeit(stmt=statement3, setup=setup, number=num_of_times)
print("Inside: {} seconds".format(inside/num_of_times))
print("Outside: {} seconds".format(outside/num_of_times))
print("Nothing: {} seconds".format(nothing/num_of_times))
好吧,我就是这么想的,但由于我不知道blit函数中隐藏了什么,我不确定它是否做了大量的计算,没有任何结果。@Sorade我更新了我的答案,以包含更多信息和实际证据,证明我是正确的,这样你就不会盲目地相信一个有互联网接入的疯子。