Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节
上篇文章使用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 游戏框架搭建 (二十一) 使用对象池时的一些细节相关推荐
- Unity 游戏框架搭建 (七) 减少加班利器-QApp类
本来这周想介绍一些框架中自认为比较好用的小工具的,但是发现很多小工具都依赖一个类----App. App类的职责: 1.接收Unity的生命周期事件. 2.做为游戏的入口. 3.一些框架级别的组件初始 ...
- Unity 游戏框架搭建 (九) 减少加班利器-QConsole
为毛要实现这个工具? 在我小时候,每当游戏在真机运行时,我们看到的日志是这样的. 没高亮啊,还有乱七八糟的堆栈信息,好干扰日志查看,好影响心情. 还有就是必须始终连着usb线啊,我想要想躺着测试... ...
- Unity 游戏框架搭建 (五) 简易消息机制
什么是消息机制? 23333333,让我先笑一会. 为什么用消息机制? 三个字,解!!!!耦!!!!合!!!!. 我的框架中的消息机制用例: 1.接收者 using UnityEngine;names ...
- Unity 游戏框架搭建 2019 (四十二) MonoBehaviour 简化
在前两篇,我们完成了第九个示例.为了完善第九个示例,我们复习了类的继承,又学习了泛型和 params 关键字. 我们已经接触了类的继承了.接触继承之前,把类仅仅当做是方法的集合,接触了继承之后,我们的 ...
- Unity 游戏框架搭建 2018 (四) 我所理解的框架
前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...
- Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介
约定 还记得上版本的第二十四篇的约定嘛?现在出来履行啦~ 为什么要重制? 之前写的专栏都是按照心情写的,在最初的时候笔者什么都不懂,而且文章的发布是按照很随性的一个顺序.结果就是说,大家都看完了,都还 ...
- Unity 游戏框架搭建 2019 (四十五) 独立的方法和独立的类
我们在开始本示例之前,先整理出我们当前库中的代码类型. 工具方法:CommonUtil.GameObjectSimplify等. 类: MonoBehaviourSimplify. 静态方法中的方法全 ...
- Unity 游戏框架搭建 2019 (四十七) 集成到 MonoBehaviourSimplify
还记得我们的简易消息机制是为了解决什么问题诞生的嘛? 是为了解决脚本间访问的问题. 我们回过头再看下 A 脚本如果想访问 B 脚本,使用消息机制,如何实现. 代码如下: public class A ...
- Unity SKFramework框架(二十一)、Texture Filter 贴图资源筛选工具
目录 简介 使用步骤 1.选中所有Texture贴图 2.打开Texture Filter工具 3.指定筛选类型 4.Filter 进行过滤 简介 如图所示,在Unity Project窗口中我们可以 ...
最新文章
- AI一分钟|许家印抄底FF初见成效,FF91量产在望;苹果新专利:Siri将能识别用户身份...
- union--求集合的并集
- Windows下用PIP安装scipy出现 no lapack/blas resources found
- 20131127-正则表达式
- 前端学习(3104):react-hello-虚拟dom和真实dom
- php 静态页面模板类,dedetag.class.php 静态模板类
- 95-190-448-源码-window-Trigger-CountTrigger
- tensorflow: slim
- 密码协议(一)协议概述
- centos yum 安装
- Vue开发者工具 安装
- 成都盛铭轩:如何增加店铺流量
- 使用手机自带邮箱软件登陆网易企业邮箱
- 【A Neural Algorithm of Artistic Style】 Pics
- easyui支持ie8浏览器
- egret 实战教程之跳一跳(一)
- Kotlin学习笔记(十一)Sealed类和Sealed接口
- 通过Auto Layout和Size Classes深入了解UIStackView的好处和使用
- 6.Python之函数
- 【转载】 Matlab中的画图函数(可视化编程)
热门文章
- 公共基础选择题—关系代数和范式
- c语言编程软件出现问号,【C语言】if语句和问号表达式
- laravel mysql rand_laravel如何从mysql数据库中随机抽取n条数据(高性能) - Laravel学习网...
- java 连续运算_JS连续运算
- php7怎么开pdo,linux php7.2开启pdo等扩展
- java shell排序算法_【算法】8种排序算法(Java)
- 新网站如何在最短的时间内提升排名呢?
- 三点提升关键词排名的写作技巧
- 浅析SEO优化怎样打好企业新站优化基础稳步提升排名
- simulink中mask设置_Mask Editor 概述