- 博客(50)
- 资源 (8)
- 收藏
- 关注
原创 数据结构与算法之线性结构
什么是线性结构?线性结构时最常见,最普片的一种属觉结构,线性表是线性结构的一种抽象。线性结构的特点是,线性结构数据元素之间存在着一对一的关系,这种元素之间的关系是指他们的位置关系,而这种一对一之间的元素关系是指:(1)除第一个元素外,它的前面永远都只有一个元素,(2)除最后一个元素外,他的前面永远只有一个元素。也就是说线性结构是数据一个挨着一个排列的。在C#中常用的线性结构比较?《1》
2017-07-11 10:50:35
590
原创 数据结构与算法-揭秘
什么是数据结构?字面意思就是研究数据的一种方法,就是研究数据在程序中组织的一种方法。数据结构就是,元素与元素有一种或者多种关系的集合,在软件界有一种比较普片的公式就是程序 = 数据结构 + 算法。常用的有哪些数据结构?(1)集合(Set) 和数学的集合一样,具有唯一性,确定性,无序性。(2)线性结构 典型的数据库二维表,一对一的关系。(3)树形结构
2017-07-10 12:18:23
451
原创 来说说(Template Method )模版方法模式
1,无处不在的Template Method 模式需求的变化是软件设计永恒的定理,如何管理变化带来的复杂性呢?,设计模式的艺术性和复杂度就在于如何分析,和发现分析系统中的变化点和稳定点Template Method模式的意图就是定义一种稳定不变的算法结构,然后变化的部分在子类中去实现。就像我们查询数据库一样,我们不管是查询那一张表,他都将是下面的步骤:1.连接数据库(Conne
2017-06-30 16:38:57
395
原创 来说说(Iterator)迭代器模式
1,动机。 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“ 同一种算法在多种集合对象上进行操作”提供了可能。2,实用性1.访问一个聚合对象的内容而无需暴露它的内部表示。2.支持对聚合对象的多种遍历。3.为遍历不同的聚合结构提供一个统一
2017-06-28 12:19:27
379
原创 来说说(Proxy) 代理模式
1,生活中的例子。 代理模式提供一个中介以控制对这个对象的访问。一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。而在软件系统中,这种代理模式,依然可以更好的把要访问的对象保护起来,不让客户端直接靠近,客户端可以对实际要访问的系统做在此封装,条件等的判断。2,实际的代码using System;/// /// 代理模式///
2017-06-28 10:25:11
361
原创 来说说(Facade)外观模式
外观模式的实用性? 1.为一个复杂子系统提供一个简单接口。 2.提高子系统的独立性。 3.在层次化结构中,可以使用Facade模式定义系统中每一层的入口。代码实现using System;using UnityEngine;public class AdpaterTestDemo{ public void testBirdgeMain()
2017-06-27 14:56:44
347
原创 来说说(Composite)组合模式
1、组合模式应用分析 组合模式可以适用以下情形: ◊ 希望把对象表示成部分—整体层次结构; ◊ 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中所有对象。 组合模式具有以下特点: ◊ 定义了包含基本对象和组合对象的类层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,不断的递归下去。客户代码中,任何用到基
2017-06-27 12:47:27
310
原创 来说说<Bridge>桥接模式
1,什么是桥接模式?通常的例子就是,向画笔一样,有12种颜色,分别有大中小三种笔刷,我们要怎么组合才最简单,最优化?最笨的方法需要组合3 * 12 = 36 次才能达到我们的要求,如过我们像毛笔一样,有三种大中小的画笔,但是有12种的颜料,我们只需要组合3 + 12 = 15 次,我们大家都知道所有的颜色都是有红绿蓝组成,那么我们只需要3 +3 = 6 次,我们就可以得到所有的颜色。我们来实现
2017-06-26 16:40:34
320
原创 来说说<Adpater>适配器模式
适配器模式,是满足不同的新需求,但是新的需求又和老的需求有某种连续这种情况用适配器模式在何时不过了。using System;using System.Collections;/// /// 适配器设置模式/// interface IStack{ void Push(); void Pop(); void Peek();}/// /// 方法的适配器///
2017-06-26 13:33:46
312
原创 来说说(Prototype)原型模式
1.原型模式使用的场合?当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配了多个一样的类实例对象,然后如果采用工厂模式来创建这样的系统的话,随着产品类的不断增加,导致子类的数量不断增多,反而增加了系统复杂程度,所以在这里使用工厂模式来封装类创建过程并不合适,然
2017-06-23 17:24:53
367
原创 来说说<Builder>创建模式
1.什么是创建者模式?在什么时候使用?当我们要创建一个复杂的系统,并且这种系统由着特定的复杂的步骤组合而成,我们要怎么办?就像老板要你去采购一批电脑,电脑的配置各有所不同,品牌也不同,而电脑由不同的部件组成,主板,内存,显示器,机箱等组成,而你不肯能一个一个零件的去采购,然后在来组装,这时候,我们就需要去找电脑城的老板,去找不同品牌的老板,让老板来给你组装好成品的电脑,你只需要付钱就可以拿到不
2017-06-23 16:20:35
247
原创 来说说(SimpleFactory)简单工厂模式
1。何为简单工厂模式?就是把创建的过程封装起来,客户只关心需要什么样的产品,不关心整个产品创建的过程。我们来实现一个简单的工厂模式。我们就拿客户点餐为例,客户想要什么食品,他不关心食品是怎么做的,食品的做法直接交给工厂即可。我们来创建一个食品的基类。并且创建2种食品。using System;using UnityEngine;public abstract class Food{
2017-06-21 15:45:48
380
原创 来说说(Singleton)单例模式
1.单例模式很常见,这多余的就不说了,我们来实现一个多线程下面的单例,在传统的单例模式下面,我们可以完全保证在程序的整个运行周期类只存在一个实例,但是在多线程的情况下,由于内存没有共享等原因,很有肯能造成多个实例,我们通常的解决方案就是给对象加锁,代码如下:using System;public class Singleton{ //定义一个静态变量来保存类的实例 private s
2017-06-21 11:37:15
196
原创 来说说(AbstractFactory)静态工厂模式
1。什么时候需要静态工厂模式? (1)一个系统要独立于它的产品的创建、组合和表示时。 (2)一个系统要由多个产品系统中的一个来配置时。 (3)当你要强调一系列相关的产品对象的设计以便进行联合使用时。 (4)当你提供一个产品类库,而只想显示它们的接口不是实现时。2。我们来实现一个静态工厂模式我们来实现一个UI的静态接口using System;
2017-06-20 10:36:21
272
原创 来说说(Strategy)策略模式
1.什么是策略模式?为了解决什么问题?实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或
2017-06-17 16:32:32
983
原创 来说说(Decorator)装饰者模式
1.装饰者模式为了解决的问题?在面向对象设计原则中,是优先使用组合而非继承,我们要扩展一个基类的时候,我们增加了新功能,要是修改基类的话,那么所有的对象都有这个新功能了,我们在子类中扩展的话,那么势必会造成子类与子类有着大量相似,重复的代码,这样就有违背我们的设计原则了,所以在特别情况下,我就要向大家推荐装饰者模式了,在各种引擎中,大部分很多都用到了装饰者模式,像我们熟悉的cocos2dx,他
2017-06-16 17:57:33
314
原创 来说说(Memorandum)备忘录模式
1.什么是备忘录模式?根据他的名字来分析,我们就知道他是来保存一些状态的,当回滚的时候,就可以来进行返回,撤销等操作,就像我们coding的时候,写错了,要直接control + z来进行返回,当我们又不想破坏对象的原封装性,又要来存储,记录一些状态,怎么办?就像四五年前,我们做的萌三国之类的战旗一样,我们手动控制武将的移动,移动了一会我们反悔了怎么办?这样备忘录模式就能够游刃有余的给我们解决
2017-06-15 12:41:38
427
原创 来说说SubClass沙盒模式
1,子类沙盒模式的意义。此模式其实是一种非常小巧的模式,其实也是一种小技巧,我们来说说游戏中的技能系统的设计吧,它大致分为主动技能,被动技能,增益技能,减益技能,一个技能又可能有多种表现形式,有种不同的等级,那我们怎么办呢?凭借我这么多的经验来说其实在简单不过了,等级不同怎么办,设置成配表,不同技能怎么办,大多数没什么经验的人都会设计成继承关系,然后子类来改写基类的实现方法,从而实现不同的技能
2017-06-14 16:06:21
395
原创 C# 容器详解及其整理
C# 中大致分为如下几种容器。Array,Arraylist, List,ListLined,Queue,Stack,DictionaryArray:他是最简单的数据类型了 1,他的内存是连续的,相当于C++的vector 2, 他可以通过下标来进行访问。 3,数据类型都是一样的 优点:内存连续,访问速度快。可以直接索引下标来进行增,删,改,查。他的速度是恒定
2017-06-13 20:58:54
9209
原创 来说说指令(Command)模式
1.指令模式的意义。模式是为了解决问题而生,他让编程流程化,面相对象话,系统模块话,让人易于读,易于写,易于扩展,易于修改,软件逻辑,尤其复杂点的游戏世界,它的逻辑更是千奇百遍,策划的思路有时候更是天马行空。所以为了解决这些问题,人们约定俗成了一样设计思路,即设计模式。但是也不能一味的套用设计模式,他也同时只是一种思想,跟古代的兵法一样,虚虚实实,伺机而动。而今天所说的指令模式,其实说白了就是
2017-06-13 16:49:28
1494
原创 unityShader流程对比及其总谱
1.Unity的3种Shader流程图上面三种Shader在unity中都能够使用一种ShaderLab 的语法来进行编写Shader。基本的ShaderLab的基本结构如下Shader “ name” = {[Properties][SubShader][FallBack]}Properties : 属性,他定义了一些引用变量,可以在 Unit
2017-06-10 20:17:01
595
原创 来说说组件(Components)模式
1.什么是组件模式?通俗点讲,我觉得他像一个机械工程一样,像飞机,潜艇,他有许多的零件系统组成,各个零件部门相互独立,独立来加工,等把需要的组件零件都加工生产完成之后,由组装师组成一个完整的个体,而要启动这个整体飞机要起飞,潜艇要发射炮弹,各个系统组件都协调有序的运行起来。而这些组件又想独立于系统,随时可以进行更换,进行升级。2.在游戏中是怎么使用的?现在的游戏中大量的用到了组件模式,他比继承
2017-06-09 16:53:42
3263
1
原创 来说说Unity观察者(Observer)模式
何为观察者模式,大家都比较形象的例子,和报纸的订阅差不多,订阅者就属于观察者,我想要订阅报纸了,然后就像报刊社订阅报纸,然后每天都有邮递员向您这送报纸,不想订阅了,就自己取消,然后第二天就不会有人给你送报纸。我们来利用Delegate实现一个简单的观察着模式.创建一个消息封装体Class,用来传递需要的消息using System;using UnityEngine;namespac
2017-06-08 18:02:06
626
原创 委托(Delegate)的详解
1、定义 delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类。与其它的类不同,delegate类能够拥有一个签名(signature),并且它"只能持有与它的签名相匹配的方法的引用"。 它允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m。 delegate是面向对象、类型安全、可靠的受控
2017-06-08 15:47:16
874
原创 <Shader>LightMap光照Shader的实现
1,按照具体的步骤来生成LightMap文件后我们来写Shadershader "LightMap/LightMapSH"{ Properties{ _MainTex("Main tex",2D) = "white"{} } SubShader{ pass{ CGPROGRAM #pragma vertex vertx #pragma fragment fr
2017-06-04 15:23:29
2262
原创 <Shader>模型颜色动态渐变,lerp的灵活使用
1.简单的颜色动态变化,通过坐标的值来判断fragment 返回不同的颜色值。需要注意的是模型的坐标通常是[-0.5,0.5]的范围内的,然后通过lerp函数来进行颜色的融合相加。虽然可以通过if else 等判断语句来完成,但是这样对于gpu来说是一种伤害,并补高效。Shader "changecolor/ChangeColorTest" { Properties { _Color1
2017-06-02 12:47:02
2701
原创 Lua内置函数大全
•assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 •collectgarbage() - 垃圾收集器. (新增于1.10.1) •date(format, time) - 返回当前用户机器上的时间. •error("error message",level) - 发生错误时,输出一条定义的错误信息.
2017-06-01 16:17:55
4535
原创 Shader 内置函数大全
Intrinsic Functions (DirectX HLSL)The following table lists the intrinsic functions available in HLSL. Each function has a brief description, and a link to a reference page that has more detail ab
2017-06-01 16:09:03
10234
原创 <Shader>Unity Shader 中的 alpha测试
通道通常是8位的灰度图像,能够显示1-256种灰度,用来表示颜色的RGBA值。R红色,G绿色,B蓝色,A透明值, 其中RGB为原色通道,A为透明通道。在通道中,以白色代替透明表示要处理的部分,以黑色表示不需处理的部分。所有通道取值范围是 [0,255], 但是在Shader里取值范围是[0,1], 0和1分辨对应0和255Alpha 检测用于在 fragment 函数完成最终的计算之后,在即
2017-06-01 16:01:53
974
原创 <Shader> 一个简单的设置透明度,和深度缓存的Shader
Shader "Custom/AlphaShader" { properties{ _AlphaColor("Alpha Color:",color) = (1,1,1,1) } Subshader{ Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" } ZWrite off //off
2017-05-31 17:49:29
1983
原创 <Shader>phong 光照模型和 blinn phong 模式
Shader "Custom/Lighting001" { Properties{ _diffuseColor("diffuse :",color) = (1,1,1,1) _specularColor("specular:",color) = (1,1,1,1) _shimininess("specular power",range(1,100)) = 10 } SubS
2017-05-31 14:55:45
811
原创 <Shader> 最终版本的水纹效果
Shader "Custom/RippleShader"{ Properties {// _Color("Base Color", Color) = (1,1,1,1) _MainTex("Base(RGB)", 2D) = "white" {} _NoiseTex ("Wave Noise", 2D) = "white" {}//噪
2017-05-27 18:29:50
2491
原创 <Shader>简单的纹理坐标滚动(水波模型:脚本控制)
Shader "Custom/RivalShader001" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _SpecColor ("Spec Color", Color) = (1,1,1,0) _Emission ("Emmisive Color", Color) = (0,0,0,0) _Shininess
2017-05-27 17:50:31
932
原创 <Shader>简单的纹理坐标滚动(水波模型)
Shader "Custom/RivalShader"{ Properties{ _MainTex("Base (GRB)",2D) = "white"{} //增加 X,Y 轴的移动速度 _ScrollXSpeed("X Scroll Speed",Range(0,10)) = 2 _ScrollYSpeed("Y Scroll Speed",Range(0,10)) = 2
2017-05-27 17:18:57
710
原创 <Shader> 自定义光照模型
Shader "Custom/LightingModule"{ Properties{ _MainColor("Base Color",color) = (1,1,1,1) _AmibentColor("Amient Color",color) = (1,1,1,1) _MySliderValue("This Slider",range(0,10)) = 2.5 } Sub
2017-05-26 17:23:08
484
原创 构建基础的C#3D工程
1.创建Vector4 来表示顶点数据类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _3DTemple{ class Vector4 {
2017-05-25 21:29:52
943
原创 <shader>一个简单的边缘发光的例子(vf 语法)
Shader "Custom/BasicRimShader001"{ Properties{ //主颜色 _MainColor("MainColor",color) = (0.5,0.5,0.5,1) //漫反射纹理 _TextureDiffuse("Texture Diffuse",2D) = "white" {} //边缘发光的颜色 _Rim
2017-05-24 18:27:25
843
原创 <Shader>一个简单的边缘发光的例子
Shader "Custom/SurfaceRimShaderNew"{ Properties{ //主颜色 _MainColor("_MainColor ",color) = (1,1,1,1) _MainTex("_MainTex",rect) = "white"{} _BumpMap("_BumpMap",2d) = "white"{} _RimColor("_R
2017-05-24 15:59:50
1845
原创 <Shader>透明效果+纹理融合 vertex和fragment
shader "Custom/VertexFragment003"{ Properties{ _MainColor("Main Color:",color) = (1,1,1,1) _MainTexture("Main Texture",2d) = "white" {} _SpecularColor("Specular Color:",color) = (1,1,1,1) _Sp
2017-05-24 10:55:21
1203
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人