Python 2.7 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就

我目前正在做一个2D俯视空间探索游戏。我有相当多的行星,由于地图的跨度比显示的要大得多,我最终在显示区域外发现了很多行星精灵。目前,我假设Pygame不会在屏幕上显示精灵(据我所知,显示和绘制到表面会大大降低速度),这是真的吗?或者我需要在blit调用之前添加一个条件来检查精灵是否位于显示器内?我问这个问题的原因是,我的游戏的运作方式是,每次发现一颗行星,就会产生两颗新的行星。。。这意味着游戏可能变得相当大,而且可能非常缓慢


谢谢

不,它不会显示图像。如果你试图在屏幕外闪现一些东西,Pygame就会忽略它。除非有大量的对象,否则它不应该减慢你的程序,因为pygame需要一小部分时间来确定图像是否在屏幕之外。不过这不是什么大不了的事

意识到我的答案缺乏证据(这很糟糕,mkay…),所以我做了一些测试来证明我的观点。我测试了3个条件:在屏幕上闪烁,在屏幕外闪烁,什么也不做。它们花费的秒数无关紧要,因为它们是基于我的电脑(一台5年的笔记本电脑)的性能,所以要寻找它们之间的因素;对每个人来说都应该是相似的

5000磅
  • 内部:0.033265519510593734秒
  • 外部:0.002402466401003767秒
  • 无:0.000237229449441657秒
50万磅
  • 内:3.639024520190433秒
  • 外部:0.23328839021967726秒
  • 无:0.023549600850092247秒
5000万磅
  • 内: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我更新了我的答案,以包含更多信息和实际证据,证明我是正确的,这样你就不会盲目地相信一个有互联网接入的疯子。