上篇文章使用SafeObjectPool实现了一个简单的Msg类。代码如下:

        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使用接口的显示实现。

代码如下:

        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/

QFramework&游戏框架搭建QQ交流群: 623597263

转载请注明地址:凉鞋的笔记http://liangxiegame.com/

微信公众号:liangxiegame

如果有帮助到您:

如果觉得本篇教程或者 QFramework 对您有帮助,不妨通过以下方式赞助笔者一下,鼓励笔者继续写出更多高质量的教程,也让更多的力量加入 QFramework 。

  • 给 QFramework 一个 Star:https://github.com/liangxiegame/QFramework
  • 下载 Asset Store 上的 QFramework 给个五星(如果有评论小的真是感激不尽):http://u3d.as/SJ9
  • 购买 gitchat 话题并给 5 星好评: http://gitbook.cn/gitchat/activity/5abc3f43bad4f418fb78ab77 (6 元,会员免费)
  • 购买同名的蛮牛视频课程并给 5 星好评:http://edu.manew.com/course/431 (目前定价 29.8 元,之后会涨价)
  • 购买同名电子书 :https://www.kancloud.cn/liangxiegame/unity_framework_design( 29.9 元,内容会在 2018 年 10 月份完结)

笔者在这里保证 QFramework、入门教程、文档和此框架搭建系列的专栏永远免费开源。以上捐助产品的内容对于使用 QFramework 的使用来讲都不是必须的,所以大家不用担心,各位使用 QFramework 或者 阅读此专栏 已经是对笔者团队最大的支持了。

转载于:https://www.cnblogs.com/liangxiegame/p/9123353.html

Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节相关推荐

  1. Unity 游戏框架搭建 (七) 减少加班利器-QApp类

    本来这周想介绍一些框架中自认为比较好用的小工具的,但是发现很多小工具都依赖一个类----App. App类的职责: 1.接收Unity的生命周期事件. 2.做为游戏的入口. 3.一些框架级别的组件初始 ...

  2. Unity 游戏框架搭建 (九) 减少加班利器-QConsole

    为毛要实现这个工具? 在我小时候,每当游戏在真机运行时,我们看到的日志是这样的. 没高亮啊,还有乱七八糟的堆栈信息,好干扰日志查看,好影响心情. 还有就是必须始终连着usb线啊,我想要想躺着测试... ...

  3. Unity 游戏框架搭建 (五) 简易消息机制

    什么是消息机制? 23333333,让我先笑一会. 为什么用消息机制? 三个字,解!!!!耦!!!!合!!!!. 我的框架中的消息机制用例: 1.接收者 using UnityEngine;names ...

  4. Unity 游戏框架搭建 2019 (四十二) MonoBehaviour 简化

    在前两篇,我们完成了第九个示例.为了完善第九个示例,我们复习了类的继承,又学习了泛型和 params 关键字. 我们已经接触了类的继承了.接触继承之前,把类仅仅当做是方法的集合,接触了继承之后,我们的 ...

  5. Unity 游戏框架搭建 2018 (四) 我所理解的框架

    前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...

  6. Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介

    约定 还记得上版本的第二十四篇的约定嘛?现在出来履行啦~ 为什么要重制? 之前写的专栏都是按照心情写的,在最初的时候笔者什么都不懂,而且文章的发布是按照很随性的一个顺序.结果就是说,大家都看完了,都还 ...

  7. Unity 游戏框架搭建 2019 (四十五) 独立的方法和独立的类

    我们在开始本示例之前,先整理出我们当前库中的代码类型. 工具方法:CommonUtil.GameObjectSimplify等. 类: MonoBehaviourSimplify. 静态方法中的方法全 ...

  8. Unity 游戏框架搭建 2019 (四十七) 集成到 MonoBehaviourSimplify

    还记得我们的简易消息机制是为了解决什么问题诞生的嘛? 是为了解决脚本间访问的问题. 我们回过头再看下 A 脚本如果想访问 B 脚本,使用消息机制,如何实现. 代码如下: public class A ...

  9. Unity SKFramework框架(二十一)、Texture Filter 贴图资源筛选工具

    目录 简介 使用步骤 1.选中所有Texture贴图 2.打开Texture Filter工具 3.指定筛选类型 4.Filter 进行过滤 简介 如图所示,在Unity Project窗口中我们可以 ...

最新文章

  1. AI一分钟|许家印抄底FF初见成效,FF91量产在望;苹果新专利:Siri将能识别用户身份...
  2. union--求集合的并集
  3. Windows下用PIP安装scipy出现 no lapack/blas resources found
  4. 20131127-正则表达式
  5. 前端学习(3104):react-hello-虚拟dom和真实dom
  6. php 静态页面模板类,dedetag.class.php 静态模板类
  7. 95-190-448-源码-window-Trigger-CountTrigger
  8. tensorflow: slim
  9. 密码协议(一)协议概述
  10. centos yum 安装
  11. Vue开发者工具 安装
  12. 成都盛铭轩:如何增加店铺流量
  13. 使用手机自带邮箱软件登陆网易企业邮箱
  14. 【A Neural Algorithm of Artistic Style】 Pics
  15. easyui支持ie8浏览器
  16. egret 实战教程之跳一跳(一)
  17. Kotlin学习笔记(十一)Sealed类和Sealed接口
  18. 通过Auto Layout和Size Classes深入了解UIStackView的好处和使用
  19. 6.Python之函数
  20. 【转载】 Matlab中的画图函数(可视化编程)

热门文章

  1. 公共基础选择题—关系代数和范式
  2. c语言编程软件出现问号,【C语言】if语句和问号表达式
  3. laravel mysql rand_laravel如何从mysql数据库中随机抽取n条数据(高性能) - Laravel学习网...
  4. java 连续运算_JS连续运算
  5. php7怎么开pdo,linux php7.2开启pdo等扩展
  6. java shell排序算法_【算法】8种排序算法(Java)
  7. 新网站如何在最短的时间内提升排名呢?
  8. 三点提升关键词排名的写作技巧
  9. 浅析SEO优化怎样打好企业新站优化基础稳步提升排名
  10. simulink中mask设置_Mask Editor 概述