前言
表弟做财务工作,每周都要处理一堆Excel,面对大量的数据,不仅人很疲劳,眼睛也很疲劳,我了解了他的工作之后,就决定帮他做一个小工具来节省劳力。
学无止境
昨天很荣幸受邀参加微软第一届为打造微软技术开发者社区生态圈现在会议,我是一名从.net转到unity的游戏开发者,也算半个微软技术圈的人,一直对微软技术比较钟爱,因为这个,我也”唆使”我的老婆成为一名.net开发者。参会的有来自各个技术社区和产业界的朋友。不但有.NET社区的,还有google、java、nodejs、linux等等开源社会的专家或者社区组织者共20余人。这届会议不同于以往只是主办人读PPT的流程,下面的参会者聆听而已,这次更多的是参会人员的发言和交流。
这次会议是微软走向开源,在以云战略为基础的新姿态。更多的是和技术社区的交流,更多的关注技术社区的发展,虚心改变服务的交流会,这让更多微软技术开发爱好者看到了未来的希望,现在开源是大势所趋,微软在14年更换CEO之后大力倡导走开源路线,才不会让微软的生态越走越窄,我之前从朋友身边了解到,他们公司的.NET产品不得不转型用java开发,我也问过为什么,朋友的回答是公司招人难。同样的问题,对于开发者而言,找工作也难,这样的话大环境只会一步一步的恶化,可能微软也有这种意识,所以现在重新重视技术生态圈的发展,这种线下交流会会越来越多,这也让微软技术开发者看到了未来的希望。
more >>此文章适合不太了解资源加载的萌新,有了入门基础之后再去github上搜大牛写的专业的资源加载方案才能得心应手,不然的话会看的很吃力或者说一脸懵逼。Unity里面关于资源加载我们都知道是下载更新AssetBundle,关于AssetBundle我之前的文章已经详细介绍过,没看过的朋友可以在看一下。下面介绍的资源加载的Demo有以下几点:
1.WWW下载图片资源
2.HTTP下载apk文件,并且支持断点续传,并且显示加载进度条
3.HTTP多线程下载文件
装饰器模式也是结构型模式中的一种,在谈装饰器模式之前我们现在谈一个跟这个相关的话题,我们如何给类扩展功能呢?我能立马想到的就是这三种方式继承、部分类、扩展,也是常用的三种方式,部分类局限于必须是我们自定义的类才能用部分类扩展,如果我们是用的类库中的类想要扩展这个方法就不行,继承或许是大多数人能想到的方法,但设计模式有一个原则就是”组合大于继承的原则”,鼓励我们多用组合少用继承,因为继承的越多类会越来越”膨胀”,子类,子子类,甚至更多我们就会容易搞混,就像你记得你的父亲和祖父,曾祖父在网上估计能记得的很少了,所以类的继承也是如此,能少的继承就少的继承。下文会介绍他们之间的区别。生活中的装饰器模式的例子,圣诞节的时候,公司给我们搞了一个活动,各个部门一个原始的圣诞树,然后让各个部门自己去装饰,看哪个部门装饰的有创意,原本光秃秃的圣诞树是没有什么功能的,经过各个部门小伙伴的装饰,使其具有了放音乐的功能,具有了金光闪闪的功能等等,这就可以理解为经过装饰让他的功能更加丰富了,下面附带一下我们公司各个部门的装饰圣诞树了,你觉得哪个装饰的最好看呢?说了一通扩展类的功能方法,那么装饰器模式又是一种什么样的模式呢?
more >>本文介绍的桥接模式,在正式开始桥接模式之前我们先来看一个案例,我们都知道汽车品牌有很多种,比如常见的BBA,每一个品牌也都有各种档位类型,例如自动挡、手动挡、手自一体等,这样的例子还有很多,例如电脑品牌和操作系统的关系,在游戏中常用的桥接模式典型的有武器跟角色的关系,下面会具体举例子讲解。
more >>结束了前一阶段的创建型模式,接下来我们来学习结构型模式。结构型模式就是通过多个类和对象进行组合得到复杂结构的类,一般使用继承或者成员变量引用的形式来实现。结构型模式总共有七种,包括代理模式、桥接模式、装饰器模式、适配器模式、组合模式、享元模式、外观(门面)模式,七种代理模式是比较常用结构型模式之一,我们来看一下项目中的代码目录截图:
上图中会看到有好多Proxy,这就是用到了代理模式,下面我们就详细学习一下这个代理模式。
本节要介绍的是建造者模式,顾名思义,重点就是在建造一词,说到建造我们首先能想到的就是建房子,这也是大多数教程都拿建房子举例介绍建造者模式,这里也简单的提一下,建房子就是打地基、砌砖、盖顶、粉刷等,着重是体现一个建造的详细过程。那么在我们游戏开发中,哪儿用到建造者模式呢?最常用于角色的创建,我们一个角色有你看得到的模型,模型需要我们实例化,也有各种各样的属性和组件组成。这些属性和组件都是需要我们去逐个创建的,然后最后再由具体的建造者去创建。
more >>原型模式谈的最多的就是克隆,谈到克隆我们就会想到第一个克隆羊多利,是我们生物工程史上的一次重大突破。克隆又称作拷贝,记得在做iOS开发的时候,刚接触OC开发谈的比较多一个知识点就是深拷贝和浅拷贝,浅拷贝只是拷贝了变量的内存地址,深拷贝拷贝了变量的内容。提到克隆我们在Unity开发中最常见的API就是 GameObject.Instantiate(),看他们的注释,Clones the object original and returns the clone,参数就是我们给定的Object然后克隆返回这个对象。为什么要有这个克隆方法呢?假设没有这个克隆方法,也就是说不用原型模式,我们想要实例化10个甚至100个这样的对象,我们是不是都要重复这些操作,实例化模型的顶点,网格,材质等等,创建实例化一个模型是非常费资源的操作,没实例化一个我们就需要从0开始,如果提供克隆方法我们就直接将这段内存copy一份然后返回即可,就方便快捷了许多。在这里抛出一个问题,思考一下Unity的GameObject.Instantiate()是如何实现的?虽然我们看不到C++实现的源代码,我们可以先猜测一下,等到学完本章节,你能猜到答案嘛?
more >>