GameDesign 板


LINE

※ 引述《jijuan (鸡卷)》之铭言: : 假设我有A B C三个物件 : 它们都会用到同一张(同一组)图片(动画) : 假设物件的建构式必须传入图片(动画) : Img A = new Img("D://test.gif"); : Img B = new Img("D://test.gif"); : Img C = new Img("D://test.gif"); : 类似这样 因为A一开始已经载入test.gif这张图了 : 有没有办法B跟C使用跟A同一份就好了 : 而不用多载两次到记忆体里面 本来如果单单修改你这个架构,最简单就是你多做一个建构式,如: Img A = new Img("D://test.gif"); Img B = new Img(A); // 直接去A里面挖指标设给B 但这样会发生依赖性的问题,A被delete掉时解构式要不要把那图清掉呢?清的 话B再去用原本的指标就烂掉了,可是不清的话A跟B都清掉後没人去清,你也没任何 办法去追踪谁是最後一个该清的。 比较好的方法可能都是要更动架构,比如你要另外维护一个ImgPool,它里面只 存了一张接一张会用到的图,并给每一张图一个Unique的id。而Img物件本身不提供 存图的空间,它只拿着它需要图的id,在需要时持id去跟ImgPool讨指标来处理自己 的行为。 ○ImgPool [基本功能] 1.可以读入一张图进Pool里并给予Unique id(可由使用者指定,只要保持Unique) 2.可以清掉Pool里的一张图 3.可以让其它(特定)物件用id取得图的内容,id若不存在就传回NULL [进阶功能] 1.可以记录每张图被使用的时间点或使用频率等等资讯,并可以设定Pool的大小,若 发现Pool满又读入图时自动以某些规则(最久远、使用频率、特殊设定)挑选可以 被清掉的图先清掉 2.可以给予一个并未真正读入的图id,当其它物件要求的id存在但并未读入时就主动 去读进来 这样你要让A跟B用同一张图,只要给他们拿一样的id就好了。而不用的时候你把 A跟B砍光光也不会发生Memory Leak,因为真正管图的是ImgPool,只要ImgPool被砍 时会去清光所有它管的图就好了。 利用这种模式除了管理以外,还有一些灵活的好处。比如说你可以直观用改Img 中持有的id让它去取到ImgPool的另一张图,但其实你也可以让ImgPool用某一个id在 不同情况下去读不同的图。前者用在切换快速且频繁,所以你预先把每张图都先读进 Pool以空间换时间减少读取的情况,後者则可以用在切换一次後不会很快又再切换, 因此每次都只读眼前要用的这张图以精简id对应的情况。 -- 「如果你还知道墙壁或地板是硬的,就不该老是去用头撞啊!」 「你在说什麽,为什麽我会没事去用头撞墙撞地板啊!」 「不然,还有什麽理由能解释你怎麽这麽笨啊!」 --兰娜.席斯塔 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.9.1
1F:推 Transformers:支持! 09/22 20:15
2F:推 DreamYeh:写真好:> M了 09/22 20:43
3F:推 doomleika:推 09/22 21:27
4F:推 LinaInverse:观念清楚 09/22 23:57
5F:推 jijuan:感谢 ddavid 详细的解说 09/23 09:58
6F:推 etrexetrex:推 09/24 19:21
7F:推 hhmmjj:赞~感谢 09/24 19:57







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP