gamemaker吧 关注:13,649贴子:95,133

【太有深度】资源的外置处理

只看楼主收藏回复

〖日常云山雾罩〗GM作为一个可视化的游戏引擎,他为我们提供了一个很好很直观的资源管理模式,资源都在资源树中呈现出来,并在游戏进行前预载这些资源,不得不说给了我们很多的便捷。然而,这便捷的背后却有不♂为♂人♂知的内幕


IP属地:辽宁来自Android客户端1楼2015-09-04 23:16回复
    然后呢,一个小时快过去了。


    IP属地:广东2楼2015-09-04 23:45
    回复
      两小时过去了


      IP属地:辽宁3楼2015-09-05 00:06
      回复
        然而8小时过去了


        IP属地:广东来自Android客户端4楼2015-09-05 07:23
        回复
          然而9个小时过去了


          IP属地:上海5楼2015-09-05 08:27
          回复
            然而13个小时过去了


            IP属地:上海6楼2015-09-05 12:16
            收起回复
              1.外置资源便于调用和释放,使用时加载,不使用了就释放,节省内存,而内置的删了就不能够再次调用了
              2.如果有其他软件要使用相同的素材,比如外置的地图编辑器,可以节省游戏大小
              3.减少游戏的加载读条时间
              4.更新游戏时只需要更新游戏exe和新增素材
              5.游戏文件夹下一堆文件看起来逼格就高了一半
              6. 此贴终结
              7.gm在使用外置的精灵编辑器简直蛋疼,会隐藏gm界面,并且编辑完关闭这个图像编辑软件才能返回gm界面,如果是ps这类的软件开启关闭太耗时,如果外置资源了,就可以随时编辑,并且不用关闭ps
              8.如果不加密素材的话,还可以让玩家们开动才智,制作出各种皮肤材质等
              9.⑨
              10.小太你太监了


              IP属地:江苏来自Android客户端9楼2015-09-05 15:50
              收起回复
                噫。。。。。。。。。。。。。


                IP属地:上海来自Android客户端10楼2015-09-05 16:21
                回复
                  哎呀呀,我昨天深夜开个贴、今天上午写作业,这功夫就有大批志(ji)士(lao)来帮我更新哈。不过咱说你们有这闲工夫把我条件判断那个帖子更了啊,把我计时器那帖子更了啊,把我圆周运动【拓展提升】更了啊
                  首先纠正一个问题,那就是,外置精灵便于读取但并不便于释放,因为你需要手动释放,而直接内载的话是不需要这一点的。
                  然后咱就说这不为人知的内幕:
                  我曾经看见过一大笔做iw的同学,而且前期总有人会找小太我帮忙改工程(从即日起,让小太帮忙改工程的,门票直降至power(10,power(10,power(10)))元哦,更多惊喜等你来拿【霾误】)结果呢,好家伙这工程,打开以后GM先是一愣:我擦勒这特么什么鬼@_@?然后“GameMaker已停止工作,某dows正在寻找解决方案....”好不容易打开了一次,我不小心创建个脚本结果:script1652……
                  嘛你们这么叼,我作为你爹地我都不知道,结果呢,我尝试运行,然后先不谈论各种错误,光是Loading...这位酱油基佬就比平时多呆了两分半钟……
                  是的,这就是GameMaker资源树不得不说之殇……由于你都把资源一股脑塞进GameMaker的资源树下,而载入资源树的资源是要在游戏开始时一同载入到游戏中的,这些游戏资源就会进入内存。
                  说这么一大堆云山【雾】罩想说明什么呢,同志们,大量的资源GM也是吃不消的……


                  IP属地:辽宁11楼2015-09-05 20:34
                  收起回复
                    说了这么多都是废话


                    IP属地:上海13楼2015-09-06 12:24
                    收起回复
                      ONE PIECE 资源外置传说
                      等待更新。


                      IP属地:辽宁14楼2015-09-06 15:09
                      回复
                        还有,由于有开学了,此帖会有五天(Mon~Fri)的休贴期


                        IP属地:辽宁来自Android客户端16楼2015-09-06 23:19
                        回复
                          有意思= =。。。


                          IP属地:北京19楼2015-09-09 23:02
                          回复
                            太有深度,还在挖掘中。。。
                            上次挖到一个叫做索引的一个大金矿(--+500¥叮~叮~ --不是钻石猪差评→_→ --你ya黄金矿工玩多了吧→_→),既然要用这个大金矿,我们必须先能够把它运出去为大众所用不是?所以,我们会将其存入到变量中使用。这就是流程中的第一步——分配索引。通常地,我们用来载入资源的函数都是可以返回该资源的索引的,而这个,也是我们用来获取这个资源索引的唯一手段,因此这是非常关键的,那么,我们要做的就是,把矿放车里运出去,换句话说,资源载入函数通常不独立成句,因为这样做没有太大意义,你不能用一个很合法的方式调用它。那么这个函数值必须存在一个变量中(推荐用全局变量),这样变量就会携带索引值,你如要选择使用、修改这个资源,那么你便可以使用这个变量指向这个资源,非常利于管理。
                            ======以上内容只是收上面的尾巴======
                            载入资源我们便可以使用了,使用资源就和其他预载入的资源都相同,想必不用多说。关键在于使用结束后如何科学的进行超电磁炮(雾)资源清理。


                            IP属地:辽宁来自Android客户端20楼2015-09-11 22:46
                            回复
                              【如何科学的进行资源清理与内存回收】
                              外置资源和内置资源都可以被手动删除,而对于外置资源而言,这一步是必需的,因为游戏结束后,外置资源可不会自动回收,长此以往,很容易引发内存错误。尽管内存错误并不属于什么大错误,通常不会构成什么威胁,但咱说有点不太友好,玩着玩着一个大红叉“内存0x23333666不能为f**k”(你又调皮了)……
                              如果是固定的资源载入,且当资源并不多时你可以逐个删除。但如果不是这种情况,可能要麻烦一些,比如你并不知道资源的数量,或者资源多的就像⑨的智商(⑨:)的话,似乎你并不太可能也并不能去使用逐个删除的方法,因此我们要动用一些小方法。
                              其实很简单,就像那句话:“只要一切都在我的计算之中”,我们只要获得这些资源全局性的管理权限,或者说有人帮我们记着谁被载入了这个事,似乎就可以不遗漏的释放、删除这些资源。
                              那么谁来记呢,来吧,滚出来吧数据结构,别躲了。(ds:雅蠛蝶)
                              我们使用列表把我们载入了啥都记录下来,最好分资源种类去记,,这样统一管理资源,我们可以在结束时按“辛德勒名单”来不漏一个的删除资源释放内存,可以考虑去使用遍历列表的小想法,这会十分快捷。但最后切记,数据结构也是资源,你别忘了把他们最后也删掉,就是传说中的卸磨杀驴。


                              IP属地:辽宁来自Android客户端21楼2015-09-11 23:08
                              收起回复