gamemaker吧 关注:13,629贴子:95,031
  • 38回复贴,共1

有没有人救救我,gm8是不是有内存上限啊

只看楼主收藏回复

😅😅真的佛了,我导入的很多精灵都是那种6、7十多张的动图,大概导入了很多吧然后今天下午导入了一套动图后运行程序直接未响应了😅,不知道是不是内存爆了,后面我改成加载条一步一步导入音乐文件还是没用,我就怀疑是不是贴图占内存太大了,但是我把导入的贴图全删了也还是没用,后来我看了下删掉贴图后gmk内存压根没变化呀(依旧是100kb)莫非我导进了就出不来了?😅最后我还是想问一下,如果我贴图都改成用sprite_add从程序外导入到程序内还会内存爆掉吗,求你们了来个人救救我吧




IP属地:湖南来自Android客户端1楼2024-03-02 22:40回复
    我去破案了,我把开头持续的实例obj_world的字体导入去掉就解决了,不是这玩意很占内存吗


    IP属地:湖南来自Android客户端2楼2024-03-02 22:59
    收起回复
      参考我的这个帖子:
      1 gm8有内存上限,自动释放的过程很缓慢,如果你全部动画都在gmk里的话最后会卡死并闪退
      2 如果你使用了小狐狸的中文绘制插件,他有制作内存保护,当你遇到1的情况时会报错access什么的
      3 使用spriteadd可以解决该问题,但需要注意的是这只是缓兵之计,即把一次性全部导入的贴图变成了Spriteadd函数导入,当你全部add一遍之后和原来没有任何区别,所以需要内存管理系统,即当该贴图不用了之后使用release函数释放内存
      4 导入这一行为如果写在步事件或者绘制事件(和步事件一样每帧执行)都会导致内存爆炸,因为这无异于重复了几万遍3中的add操作
      5 我也在做类pvz游戏,也是贴图占用大量内存会爆炸,我的思路是全部贴图动画外载,当生成(比如豌豆射手)时,检测豌豆的贴图是否导入(很重要,不然种一个豌豆导入一次你只能释放最近那个)导入贴图,在退出关卡后释放全部资源(我是用了简单脚本,统一检测1 外部贴图是否等于一,即被导入了 2 如果是,释放该资源)


      IP属地:重庆来自Android客户端3楼2024-03-03 10:47
      收起回复
        emmmmmmm,和咱看到、知道的内容有出入,有些可能不会直接导致内存达到上限,但好多东西累积到一起就不好说了:
        0-截图显示源文件大小是100,349 KB,这叫100M而不是100K。
        1-PVZ的大多是有限的几张基础图(拆件/被吃掉一部分),加上摇摆、缩放等方式做出动画效果,直接导入“那种6、7十多张的动图”本身就意味着用内存给偷懒买单。
        2-GM8原生对中文的支持不理想,使用插件意味着要额外考虑插件本身和兼容性两个方面的风险。GMS2似乎是将需要使用的文字按字体、字号提取出图片,按sprite方式来管理,通常来说除了视觉小说、RPG之类会大量出现文本的地方之外,都可以考虑把字体载入优化掉。PVZ里似乎只有图鉴会用到,要不要考虑直接把图鉴文字卡片保存成图片?


        IP属地:北京4楼2024-03-06 16:17
        收起回复
          确实会有内存上限,但是不至于100m就爆了吧


          IP属地:广西来自Android客户端5楼2024-05-07 10:27
          回复
            GM8内存上限2G
            GMS2内存上限就是你的电脑的空闲内存大小


            IP属地:云南6楼2024-05-10 20:44
            回复
              用GMS2 2.3解决此类问题


              IP属地:宁夏7楼2024-06-11 21:43
              收起回复
                不会捏喵


                IP属地:湖南来自Android客户端8楼2024-09-10 15:08
                回复
                  gm8有最大纹理大小限制


                  IP属地:吉林9楼2024-10-10 15:19
                  回复