自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LonelySu

One Who Wants To Wear A Crown,Bear The Crown.

  • 博客(38)
  • 收藏
  • 关注

转载 设计模式深入学习--Observer 观察者模式(行为型模式)

今天我们继续来聊聊Observer 观察者模式 。Observer 观察者模式是新手入门通知类编程解耦合的最佳设计模式,没有之一。观察者模式有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。先来看基本使用用法。/// /// Subject类 主题抽象统治

2017-01-21 16:34:13 764

转载 设计模式深入学习-Builder生成器(创建型模式 )

假如我们在创建游戏中的一个房屋House设施,该房屋肯定会有好几个部分组成,而且各个部分都会经常发生改变。比如窗,门等设施需求经常发生变化,但房屋整体不变。比如换个屋顶,但我们整个房子其他东西不变。如果我们使用最直观的设计方法,那么每一个房屋部分的变化,都会导致房屋构建的重新修正。 在我们的创建程序的工作中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成,由于

2017-01-21 16:17:50 700

转载 设计模式深入学习-Factory Method设计模式

今天我们继续来聊下Factory Method创建型设计模式。在我们的开发中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接口。 那么我们应该如何应付这样的变化,怎么提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变呢?而我们今天介绍的 Factory Method创建型设

2017-01-21 16:05:58 392

转载 设计模式深入学习---Prototype原型模式

今天我们继续来聊下Prototype原型模式。这篇应该是关于工厂设计模式的最后一篇。下次就往内部讲解结构类型的设计模式。首先我们说下Prototype原型模式的用法。Prototype原型模式主要是用来处理依赖关系的倒置。 比如抽象A类依赖了实现细节B:        拿我们上个帖子举例,比如我们的小车依赖于汽油发动机。 但是当我们的小车不使用汽油发动机,改用电动了,那这时候修改起来就

2017-01-21 15:58:40 881

转载 设计模式深入学习--Strategy 策略模式(行为型模式)

这次来说说Strategy 策略模式,Strategy 策略模式在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。 我们先来看看Strategy 策略模式的基本代码。//抽象状态类 定义一个接口以封装与Context的一个特定状态相关的行为[/size] [size=16px][/size][siz

2017-01-21 15:49:16 690

转载 设计模式深入学习-单例模式

今天我们来说说在编程时候我们最常见也是最好用的一种单例模式 。单例模式太简单了,让一个类变成只有一个唯一的对象类,方便客户对象调用。那这有什么好说的呢,我们先来看看一个普通的单例模式代码。public class Singleton{ private static Singleton instance; private Singleton() { } pu

2017-01-21 15:41:37 573

转载 设计模式深入学习--Visitor 访问者模式(行为型模式)

这次我们来聊聊Visitor 访问者模式。访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对

2017-01-21 15:39:50 695

转载 设计模式深入学习--State 状态模式(行为型模式)

这次来说说State状态模式,State状态模式用于我们在编程开发中大量用到 if Else的情况下,有很多分支的判断那么用状态模式就最好不过了,如在AI设计中的状态机就可以用State状态模式来设计一个AI机器人。 我们先来看看State状态模式的基本代码。//抽象状态类 定义一个接口以封装与Context的一个特定状态相关的行为 abstract class State{

2017-01-16 17:02:47 506

转载 设计模式深入学习--Observer 观察者模式(行为型模式)

今天我们继续来聊聊Observer 观察者模式 。Observer 观察者模式是新手入门通知类编程解耦合的最佳设计模式,没有之一。观察者模式有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。先来看基本使用用法。   /// /// Subject类 主题抽象统

2017-01-16 15:02:49 389

转载 设计模式深入学习--Template Method模板方法模式(行为型模式)

今天继续来聊下Template Method模板方法模式 。 模板方法模式——在一个抽象类中定义一个操作中的算法骨架(对应于生活中的大家下载的模板),而将一些步骤延迟到子类中去实现(对应于我们根据自己的情况向模板填充内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。先来看看实现代码:abstract

2017-01-16 14:54:34 1196

转载 设计模式深入学习--Mediator 中介者模式(行为型模式)

今天我们来介绍下Mediator 中介者模式。Interpreter 解释器模式是一种我们游戏设计中大量会用到的设计模式,中介者模定义了一个中介对象来封装一系列对象之间的交互关系。中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为。我们先来看基本代码来了解下实现的原理。/// /// Mediator类,抽象中介者类/// abstrac

2017-01-16 14:45:31 646

转载 设计模式深入学习--Interpreter 解释器模式(行为型模式)

今天我们来介绍下 Interpreter 解释器模式。Interpreter 解释器模式我们能用到的地方有很多,比如我们经常用的金额 用数字转中文字,10000转成中文就是一万。 顾名思义,这个设计模式就是一个解释器,通过你输入的一个类型转成另外一个类型出来,在我们的sql查询数据库里面更加有大量的运用。我们先来看懂下基础代码,然后最后实现一个 我们游戏中的中英文切换功能。clas

2017-01-16 14:32:02 671

转载 设计模式深入学习--Command 命令模式(行为型模式)

今天我们来介绍下 Command 命令模式。Command 命令模式是一种我们在日常游戏开发中常见的一种设计模式,比如在策略类游戏中我们会看到大量的类似设计,比如 我们操作小人 请求做一件事,然后小人去响应,这种“行为请求者”与“行为实现者”是紧耦合的。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这些情况下,将“行为请求者”与“行为实现

2017-01-16 14:22:43 624

转载 设计模式深入学习---Adapter 适配器模式(结构型模式)

首先我们了解下什么是Adapter 适配器模式。在多人开发程序中,经常会碰到这样的问题,A编写了一套数据,B也编写了一套数据,两个人的实现目的相同,结构相同,但就是名字不一样。这时候A要把B的代码结合到自己的程序中,如A制作了几个敌人攻击类,里面都有Attack方法,通过循环把全部敌人的Attack方法调用。B也制作了一个敌人类,但是B的敌人类的方法不是Attack方法,叫Hit方法,那这时怎么办

2017-01-16 14:03:10 657

转载 设计模式深入学习--Proxy 代理模式(结构型模式)

今天继续介绍下 Proxy 代理模式 代理模式。Proxy 代理模式是我们开发中挺常见的一种设计模式。当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求

2017-01-16 11:54:24 682

转载 设计模式深入学习--Chain of Responsibility 职责链模式职责链模式(行为型模式)

这次和大家一起学习一下 职责链设计模式。职责链设计模式非常好用,尤其是在做逻辑判断处理很多的情况下,比如一些AI的设计,配合FSM状态机可以做到一个入门级AI的小机器人。后面就用cs的ai敌人来大概讲解下职责链模式的用法。首先我们来看下职责链示例的代码:/// /// Handler类 定义一个处理请示的接口/// abstract class Handler{ protect

2017-01-16 11:43:25 358

转载 设计模式深入学习-抽象工厂模式

今天我们来聊下抽象工厂模式。首先在程序设计的时候,我们最关心的是怎么解决需求经常变动的情况下如何去设计程序,来解决各个对象相互之间的耦合性的分离。我们在编写代码的时候,首先会经常New 很多新对象,比如创建一个Apple对象Apple apple=new Apple();我们新建一个 苹果对象 而New就会实现依赖,比如我们另外要新建一个香蕉对象Banana banana =new Ban

2017-01-16 11:03:02 318

转载 设计模式深入学习--Flyweight 享元模式(结构型模式)

这次和大家一起学习一下 享元设计模式。我们在开发游戏的时候经常可能会遇到使用大量细粒度对象,比如三消游戏的 这些一个个小方块。又或者一个大型模拟游戏里面的Ai人物,或者围棋里面的黑白子,等等。。。 我们一般的优化方法就是使用对象池,将使用的拿出来,不使用了又放回去,这样的方法虽然好,但还是没有根本解决对象被大量new出来的事实,导致内存变得非常大,而Flyweight 享元模式就是通过共享

2017-01-16 10:22:41 327

转载 设计模式深入学习---Bridge桥接模式(结构型模式)

上期我们说了 Adapter适配器模式的用法,这次我们介绍下Bridge桥接模式。在介绍桥接模式的好处之前,我们先来看一个没有用该模式的一个小案例,然后再对比用了该模式的好处。 假设,我们制作一个手机游戏。该游戏只在安卓平台下面运行。public class AndroidGame { public void Run() { Console.

2017-01-13 16:38:42 393

转载 设计模式深入学习---Decorator装饰模式(结构型模式)

我们先理解下什么情况会用到Decorator装饰模式。     比如我们设计一个游戏人物,人物拥有的装扮,如衣服,裤子,靴子,手套,戒指,帽子 等 这些类型的开发,又或者是设计一个部件,比如一个武器凹槽,我们这个武器凹槽可以加 激光炮,加农炮,枪,防御盾。再或者我们制作游戏人物的技能框,里面可以有各种各样的技能。   这些时候只要是在同一个部件下,这个部件可以拥有很多独立而且等级平行的

2017-01-13 15:42:29 379

转载 设计模式深入学习---Component组合模式(结构型模式)

Component组合模式是一个非常好用而且经常可以在大型项目中看到的设计模式。   首先我们来简单过一下什么是Component组合模式以及用该模式的情况和好处。Component组合模式就是将对象组合成树形结构以表示"部分-整体"的层次结构。   Composite使得用户对单个对象和组合对象的使用具有一致性。比如我们在制作一个具有各种人物的游戏时,每个人物又各有各自特点鲜明的技能

2017-01-13 14:50:21 1100

转载 【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则

引言我们知道,在C++领域,作为进阶阅读材料,必看的书是《Effective C++》。 而《Effective C#》之于C# ,是类似《Effective C++》之于C++一样的存在。这篇文章,将《Effective C# Second Edition》一书中适用于游戏引擎里使用C#的经验之谈进行了提炼,总结成为22条准则,供各位快速地掌握这本书的知识梗概,在Unity中写出更高

2017-01-13 10:45:06 333

转载 【游戏设计模式】之四 《游戏编程模式》全书内容提炼总结

本文的Github版本:QianMo/Reading-Notes/《游戏编程模式》读书笔记这是一篇超过万字读书笔记,总结了《Game Programming Patterns》(中译版《游戏编程模式》)一书中所有章节与内容的知识梗概。我们知道,游戏行业其实一直很缺一本系统介绍游戏编程进阶技巧的书籍,而《游戏编程模式》的出现,正好弥补了这一点。之前已经有提到过,不同于传统的出版方式,

2017-01-13 10:40:51 502

转载 【游戏设计模式】之三 状态模式、有限状态机 & Unity版本实现

游戏开发过程中,各种游戏状态的切换无处不在。但很多时候,简单粗暴的if else加标志位的方式并不能很地道地解决状态复杂变换的问题,这时,就可以运用到状态模式以及状态机来高效地完成任务。状态模式与状态机,因为他们关联紧密,常常放在一起讨论和运用。而本文将对他们在游戏开发中的使用,进行一些探讨。PS:这篇文章起源于《Game Programming Patterns》第二章第六节。这

2017-01-13 10:31:11 1134

转载 【游戏设计模式】之二 论撤消重做、回放系统的优雅实现:命令模式

这篇文章起源于《Game Programming Patterns》第二章第一节,将与大家一起探索游戏开发中命令模式的用法。命令模式的成名应用是实现诸如撤消,重做,回放,时间倒流之类的功能。如果你想知道《Dota2》中的观战系统、《魔兽争霸3》中的录像系统、《守望先锋》的全场最佳回放系统可能的一些实现思路,这篇文章或许就能给你一些启示。 一、本文涉及知识点思维导图还是国

2017-01-13 10:06:01 1368

转载 【游戏设计模式】之一 序言:架构,性能与游戏

一、系列文章前言承接《代码整洁之道》的精读与演绎,《Game Programming Patterns》是我们下一个目标。写这个系列的起因,是因为最近闲暇时一直在阅读一些之前一直想看的经典著作,并有将阅读过程中一些思考和总结记录下来。为了不枉费这些阅读、思考与总结的过程,决定将这些零散的内容整理成文,沉淀下来。过些年后再回首,也许会觉得当时的一些思考,弥足珍贵。这个系列的文

2017-01-12 15:11:41 373

转载 【《代码整洁之道》精读与演绎】之五 整洁类的书写准则

这篇文章将与大家一起聊一聊,书写整洁类的一些法则。一、引言以下引言的内容,有必要伴随这个系列的每一次更新,这次也不例外。《代码整洁之道》这本书提出了一个观点:代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。但我们知道

2017-01-11 16:58:28 476

转载 【《代码整洁之道》精读与演绎】之四 优秀代码的格式准则

这篇文章将与大家一起聊一聊,书写代码过程中一些良好的格式规范。一、引言以下引言的内容,有必要伴随这个系列的每一次更新,这次也不例外。《代码整洁之道》这本书提出了一个观点:代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

2017-01-11 16:49:44 340

转载 【《代码整洁之道》精读与演绎】之三 整洁代码的函数书写准则

这篇文章,是关于整洁代码函数书写的一些准则。一、引言以下引言的内容,有必要伴随这个系列的每一次更新,这次也不例外。《代码整洁之道》这本书提出了一个观点:代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。但我们知道,很多

2017-01-11 16:43:18 517

转载 【《代码整洁之道》精读与演绎】之二 高质量代码的命名法则

本文与大家聊一聊编程中非常关键的一个点,如何更好的对代码命名。一、引言《代码整洁之道》这本书提出了一个观点:代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。但我们知道,很多时候,理想很丰满,现实很骨感,也知道人在江湖,身不由己。

2017-01-11 16:16:41 491

转载 【《代码整洁之道》精读与演绎】之一 让代码比你来时更干净

“我们就是一群代码猴子,上蹿下跳,自以为领略了编程的真谛。可惜当我们抓着几个酸桃子,得意洋洋坐到树枝上,却对自己造成的混乱熟视无睹。那堆“可以运行”的乱麻程序,就在我们的眼皮底下慢慢腐坏。” ——《代码整洁之道》作者 RobertC.Martin,于SD West 200

2017-01-01 21:21:43 670 1

翻译 【VR】Leap Motion 官方脚本手册翻译之---HandController(手型控制器)

HandController(手型控制器)

2015-05-07 21:00:51 2047

转载 PHP实现用户登录和注册的功能

Unity PHP

2015-04-09 17:04:56 2759

原创 Unity3D--创建敌人和玩家之间的AI

创建敌人和玩家之间的AIusing UnityEngine;using System.Collections;public class EnemyAI : MonoBehaviour { // 敌人冲向的目标 public Transform target; // 敌人移动速度 public int moveSpeed = 5; // 敌人旋转速度

2015-03-14 17:59:59 6283

原创 Unity3D---使用GUI实现血条的制作

血条的制作有很多的方法,在此介绍使用GUI制作血条的方法,希望对大家有所帮助:using UnityEngine;using System.Collections;public class PlayerHealth : MonoBehaviour { //玩家最大血量 public int maxHealth =100; //玩家当前血量 public int cu

2015-03-14 16:28:46 3791

原创 Unity3D实现闪光灯效果

Unity3D闪光灯效果的实现代码:using UnityEngine;using System.Collections;//定义一个Light类public class Light : MonoBehaviour { //定义一个时间长度 public float duration = 1.0F; //定义一个红色(颜色自取) public Color colo

2015-03-14 16:05:03 8747 4

转载 Unity3D--如何控制UGUI的触摸 使其可以控制穿透UGUI触摸到其它物体

如何控制UGUI触摸 使可以控制穿透UGUI触摸到其它物体方法1: 其它物体通过 EventSystem.current.currentSelectedGameObject 来进行判断 那么就是UGUI当想穿透的时候,不能有selected触发方法2: 底层加一个Panel 凡是需要穿透的物体,加一个Cancas Group,然后关闭拦截,让其穿透方法3: 根据EventSystem.cu

2015-03-14 15:41:35 7288

原创 Unity3D--Update和FixedUpdate的区别与共性

void FixedUpdate () 固定更新 void Update () 更新 相同点:当MonoBehaviour启用时,其在每一帧被调用,都是用来更新的。 异同点:第一点不同: Update()每一帧的时间不固定,即第一帧与第二帧的时间间隔t1和第三帧与第四帧的时间间隔t2不一定相同。比如:代码片段: using UnityEngine;

2015-03-14 09:29:10 6256 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除