加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在外部文件中存储unpicklabe pygame.Surface对象

发布时间:2020-12-20 11:17:27 所属栏目:Python 来源:网络整理
导读:所以我遇到了一个问题 – 我正在用 Python编写游戏原型,使用Pygame,我想保存我的游戏.所有与游戏相关的数据都在某些类的三个实例中,我想将这三个实例保存到一个文件中.但是,我试过腌制这些实例,但它不起作用.相反,我得到“TypeError:不能pickle Surface对象
所以我遇到了一个问题 – 我正在用 Python编写游戏原型,使用Pygame,我想保存我的游戏.所有与游戏相关的数据都在某些类的三个实例中,我想将这三个实例保存到一个文件中.但是,我试过腌制这些实例,但它不起作用.相反,我得到“TypeError:不能pickle Surface对象”.这是一个问题,因为我想存储Surface对象.

我可以使用任何其他类型的数据类型,对任何可能的酸洗方法持开放态度.重要的是这些实例被存储,然后可以检索它们的数据.那么我该怎么做才能克服这个问题呢?请记住,我不是一个非常有经验的程序员,一年前我在业余时间学习过Python,而且我不会写很多其他语言,尽管我正在慢慢学习C语言.

解决方法

酸洗的基本点是你应该能够以某种方式序列化对象. SDL表面是一个内存对象,具有很多运行时状态.试图将其序列化并不是完全合情合理的.

你应该做的是将你的游戏状态与渲染组件分离,这样你就可以序列化那些(酸洗或其他).

这就像试图通过某种方式保存保存解码视频的内存缓冲区来保存视频状态.这不行.相反,您如何保存它是序列化视频文件的位置和时间偏移.然后,您可以在下次还原应用程序时继续播放.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读