开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2103

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 2701|回复: 18

[凉鞋同学] Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节

[复制链接]  [移动端链接]
排名
2531
昨日变化

30

主题

362

帖子

1748

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
52
蛮牛币
1917
威望
0
注册时间
2016-5-17
在线时间
547 小时
最后登录
2018-2-22

专栏作家

QQ
发表于 2018-1-21 13:50:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 liangxiegame 于 2018-1-21 13:50 编辑

上篇文章使用SafeObjectPool实现了一个简单的Msg类。代码如下:
[C#] 纯文本查看 复制代码
                class Msg : IPoolAble,IPoolType
                {
                        #region IPoolAble 实现

                        public void OnRecycled()
                        {
                                Log.I("OnRecycled");
                        }
                        
                        public bool IsRecycled { get; set; }

                        #endregion
                
                        
                        #region IPoolType 实现

                        public static Msg Allocate()
                        {
                                return SafeObjectPool<Msg>.Instance.Allocate();
                        }
                        
                        public void Recycle2Cache()
                        {
                                SafeObjectPool<Msg>.Instance.Recycle(this);
                        }
                        
                        #endregion
                }
这个类虽然只是用来做SafeObjectExample的实例类的,但是还是有改进的空间。
在Msg的使用场景中,我们只用到了Msg类的Allocate和Recycle2Cache方法。而OnRecycled和IsRecycle这两个API用户都用不到,或者说用户用了会对Msg的管理造成风险,所以我们要想办法使用户不能访问到这两个API。
这个是可以做到的,就是把OnRecycled和IsRecycled使用接口的显示实现。
代码如下:
[C#] 纯文本查看 复制代码
                class Msg : IPoolAble,IPoolType
                {
                        #region IPoolAble 实现

                        void IPoolAble.OnRecycled()
                        {
                                Log.I("OnRecycled");
                        }
                        
                        bool IPoolAble.IsRecycled { get; set; }

                        #endregion
                
                        
                        #region IPoolType 实现

                        public static Msg Allocate()
                        {
                                return SafeObjectPool<Msg>.Instance.Allocate();
                        }
                        
                        public void Recycle2Cache()
                        {
                                SafeObjectPool<Msg>.Instance.Recycle(this);
                        }
                        
                        #endregion
                }

这样,创建出来的 Msg对象不能直接访问OnRecycled和IsRecycled这两个API了,如果硬是要访问也可以,就要将Msg对象转成IPoolAble接口就可以访问了了。
  • 最近在看《Framework Design Guidlines》,里边说IPoolAble这样的命名有问题,应该是IPoolable,嗯…,要去重构了...
关于接口的显示实现是C#的语法细节,随便贴上一篇给大家参考: C# 接口的隐式与显示实现 - Ben—Zhang - 博客园:http://www.cnblogs.com/ben-zhang/archive/2012/12/18/2823455.html
OK,今天就到这里

相关链接:
附: 我的框架地址:https://github.com/liangxiegame/QFramework
教程源码:https://github.com/liangxiegame/QFramework/tree/master/Assets/HowToWriteUnityGameFramework/
转载请注明地址:凉鞋的笔记http://liangxiegame.com




回复

使用道具 举报

7日久生情
3790/5000
排名
4180
昨日变化
2

5

主题

3129

帖子

3790

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209186
好友
5
蛮牛币
4574
威望
0
注册时间
2017-3-1
在线时间
366 小时
最后登录
2018-1-26
发表于 2018-1-22 09:19:36 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
1546/5000
排名
2706
昨日变化

0

主题

682

帖子

1546

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
148286
好友
0
蛮牛币
3073
威望
0
注册时间
2016-5-11
在线时间
418 小时
最后登录
2018-2-10
发表于 2018-1-22 10:06:02 | 显示全部楼层

回复

使用道具 举报

4四处流浪
305/500
排名
10724
昨日变化

0

主题

172

帖子

305

积分

Rank: 4

UID
250350
好友
1
蛮牛币
395
威望
0
注册时间
2017-10-23
在线时间
55 小时
最后登录
2018-2-22
发表于 2018-1-23 10:30:06 | 显示全部楼层

谢谢分享

回复

使用道具 举报

排名
2531
昨日变化

30

主题

362

帖子

1748

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
52
蛮牛币
1917
威望
0
注册时间
2016-5-17
在线时间
547 小时
最后登录
2018-2-22

专栏作家

QQ
 楼主| 发表于 2018-1-23 10:55:55 | 显示全部楼层

谢谢支持

回复 支持 反对

使用道具 举报

5熟悉之中
572/1000
排名
7639
昨日变化
1

0

主题

317

帖子

572

积分

Rank: 5Rank: 5

UID
146677
好友
9
蛮牛币
2226
威望
0
注册时间
2016-4-25
在线时间
121 小时
最后登录
2018-2-5
QQ
发表于 2018-1-24 10:56:26 | 显示全部楼层
楼主分享的很好,继续加油
[发帖际遇]: LiuBen 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

排名
21044
昨日变化
5

0

主题

3

帖子

30

积分

Rank: 1

UID
230450
好友
0
蛮牛币
81
威望
0
注册时间
2017-7-5
在线时间
11 小时
最后登录
2018-1-27
发表于 2018-1-24 15:47:35 | 显示全部楼层
谢谢  分享

回复 支持 反对

使用道具 举报

5熟悉之中
636/1000
排名
4206
昨日变化

0

主题

185

帖子

636

积分

Rank: 5Rank: 5

UID
83972
好友
1
蛮牛币
250
威望
0
注册时间
2015-3-24
在线时间
165 小时
最后登录
2018-2-9
发表于 2018-1-24 16:40:16 | 显示全部楼层
11111111111111111111111111111111111111111111111111111111111

回复 支持 反对

使用道具 举报

排名
2531
昨日变化

30

主题

362

帖子

1748

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
52
蛮牛币
1917
威望
0
注册时间
2016-5-17
在线时间
547 小时
最后登录
2018-2-22

专栏作家

QQ
 楼主| 发表于 2018-1-25 11:33:13 | 显示全部楼层
LiuBen 发表于 2018-1-24 10:56
楼主分享的很好,继续加油

谢谢支持

回复 支持 反对

使用道具 举报

2初来乍到
133/150
排名
17387
昨日变化
5

0

主题

55

帖子

133

积分

Rank: 2Rank: 2

UID
236975
好友
0
蛮牛币
185
威望
0
注册时间
2017-8-11
在线时间
52 小时
最后登录
2018-2-1
发表于 2018-1-25 16:22:39 | 显示全部楼层

回复

使用道具 举报

7日久生情
1686/5000
排名
1307
昨日变化

1

主题

528

帖子

1686

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
56496
好友
0
蛮牛币
4802
威望
0
注册时间
2014-11-19
在线时间
375 小时
最后登录
2018-2-14
发表于 2018-1-28 17:49:42 | 显示全部楼层
感谢,编程需要持续更新,感谢提供

回复 支持 反对

使用道具 举报

排名
2531
昨日变化

30

主题

362

帖子

1748

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
52
蛮牛币
1917
威望
0
注册时间
2016-5-17
在线时间
547 小时
最后登录
2018-2-22

专栏作家

QQ
 楼主| 发表于 2018-1-28 19:07:27 | 显示全部楼层
hsGuy929 发表于 2018-1-28 17:49
感谢,编程需要持续更新,感谢提供

感谢支持

回复 支持 反对

使用道具 举报

排名
20087
昨日变化
2

0

主题

10

帖子

38

积分

Rank: 1

UID
264021
好友
0
蛮牛币
63
威望
0
注册时间
2018-1-11
在线时间
10 小时
最后登录
2018-2-16
发表于 2018-2-2 14:00:49 | 显示全部楼层
谢谢分享

回复

使用道具 举报

排名
20087
昨日变化
2

0

主题

8

帖子

35

积分

Rank: 1

UID
265289
好友
0
蛮牛币
70
威望
0
注册时间
2018-1-19
在线时间
9 小时
最后登录
2018-2-5
发表于 2018-2-2 16:24:06 | 显示全部楼层
不知道这个能不能备眼,到时候看呢?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表