如何在PyGame Zero中重新加载外部更新的同名图片文件
PyGame Zero 实现外部修改图片实时重载的方案
现有代码的两个核心问题
- update 函数内的
drone是局部变量,无法修改全局定义的 drone 对象,你当前的写法本身就不会更新角色显示 - PyGame Zero 默认会对加载过的图片资源做缓存,重复调用
Actor('drone')时会直接读取缓存内容,不会重新读取磁盘上的同名文件,因此外部修改的图片无法生效
功能实现代码
from pgzero.loaders import images WIDTH = 500 HEIGHT = 500 drone = Actor('drone') def draw(): screen.clear() drone.draw() def update(): # 声明使用全局drone变量 global drone # 清空图片缓存,强制下次加载读取磁盘文件 images.clear() # 直接更新角色的图片属性,无需重复创建Actor对象 drone.image = 'drone'
可选优化方案
如果不需要逐帧重载(会额外占用性能),可以绑定按键触发重载,只有修改完图片后按指定键再刷新即可:
def on_key_down(key): global drone # 按R键触发图片重载 if key == keys.R: images.clear() drone.image = 'drone'
内容的提问来源于stack exchange,提问作者PlantPot
相关产品推荐
相关产品推荐

