自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liaosheng:)

日积月累~

  • 博客(90)
  • 资源 (2)
  • 收藏
  • 关注

原创 Unity3D 设计模式学习之备忘录模式(二)

上篇写了一个备忘录模式的简单例子模板,这次来看看具体的实现应用。这里列出上篇的地址: https://blog.csdn.net/liaoshengg/article/details/82530426现在首先来看需求: 在《P级阵地》的成就系统,只需保存每一项成就系统的最佳记录,并不需要保留多个版本,因此,在运用备忘录模式时,省去了Caretaker记录保存者的实现实现成就记...

2018-09-09 16:29:28 504

原创 Unity3D 设计模式学习之备忘录模式

备忘录模式(Memento)在游戏中可用来做存储功能。在书中使用备忘录模式”存储成就记录”直接将数据存盘功能实现于游戏功能类中,一般来说不太理想,因为违反了单一职责原则(SRP)。也就是说,各个游戏功能类应该专心处理与游戏相关的功能。而记录保存,也应交由专职的记录保存类为说明要专门写一个记录保存类呢? 书中给出了解释说明: 如果在功能模块中实现,会将内部成员数据全部公开。 虽然可...

2018-09-08 17:27:25 775

原创 Unity3D设计模式学习之观察者模式(二)

上一篇只是简单的写了观察者模式,对观察者模式只是有个大致的了解,设计模式一般都比较抽象,在实际使用思需要根据需求来设计、重构,这篇就看看书上的例子,加深理解。实现说明游戏事件系统的实现//游戏事件系统的实现public enum ENUM_GameEvent{ None = 0, EnemyKilled = 1, //敌方单位阵亡 SoldierKil...

2018-09-07 19:15:36 626

原创 Unity3D 设计模式学习之观察者模式

在本书中,成就系统使用了观察者模式。要实现成就系统之前,一般需要企划单位先将需要要的乘积事件列出来,并在项目完成到某个段落之后,才开始加入实现开发中。大致实现逻辑: 先定义“游戏事件”,如敌方角色阵亡、玩家角色阵亡、玩家角色升级等。当游戏进行过程中,有任何“游戏事件”被触发时,系统就要通知对应的“成就项目”,进行累积或条件判断,如果达到,则完成“成就项目”并通知玩家或直接给予奖励比较...

2018-09-06 19:18:09 926

原创 Unity3D 设计模式学习之责任链模式

前言责任链模式可以用来对对关卡系统的重构。将关卡数据使用类加以封装 封装的信息根据需求而定:如要出场的敌方角色的设置、通关条件、下一关的记录。 也就是让每一关都是一个对象并加以管理。而关卡系统则是在这群对象中寻找“条件符合”的关卡,让玩家进入挑战。 等到关卡完成后,再进入到下一个条件符合的关卡。GOF对责任链模式(Chain of Responsibility)的定义 “让一群...

2018-09-04 20:12:56 877

原创 Unity3D 设计模式学习之命令模式

前言一些及时战略游戏RTS 会用到命令模式,当有需求的一些功能是可以新增,删除,调度类型的,如兵营的出兵功能,我们点击按钮生成士兵,(生成士兵命令),还可以手动取消,连续施加出命令。这时就可以使用到命令模式(Command)GOF对于命令模式的定义如下: 将请求封装成为对象,让你可以将客户端的不同请求参数化,并配合队列,记录,复原等方法来执行请求的操作再见定义简单分为两本部分 请求...

2018-09-03 17:54:19 858

原创 Unity3D 设计模式学习之组合模式

前言对应游戏中的UI部分,可以使用分层式管理,将2D组件按照功能关系按层次摆放,是比较容易了解、设计和修改的。分层式管理一般也称树状结构,常用于软件实现和应用中的一种结构。GOF对于组合模式Composite的定义是: “将对象以树状结构组合,用以表现部分-全体的层次关系。组合模式让客户端在操作 各个对象或组合和组合对象是一致的”树状结构来组合各个对象,所以实现上包含了根结点...

2018-09-03 14:32:59 2047

原创 Unity3D 设计模式学习之建造者模式

前言建造者模式Builder在书中用来对于角色的组装,角色组装可以使用工厂模式来生存角色对象,但是如果要对 角色(双方士兵)作不同差异功能的时候就要再次分开写两个新的工厂类(我方士兵工厂类,敌方士兵工厂类),如果要对士兵类添加新的功能,则可以往工厂类添加方法。但是这样做会让工厂管理类这时可以用到建造者模式了 GOF对建造者模式的定义是: 将一个复杂对象的构建流程与它的对象表现分离...

2018-09-02 18:16:40 1127

原创 Unity3D设计模式学习之享元模式

前言享元模式Flyweight 用来解决大量且重复对象的管理问题。当内存受限的时候,使用享元模式来解决 大部分对象共享的问题。GOF享元模式的定义为 使用共享的方式,让一群大小规模对象能更有效地运行。共享共享指的是使用管理结构来设计信息的存储方式,让可以被共享的信息,只需要产生一份对象,而这个对象能够被引用到其他对象中。 我们把哪些对象只能读取而不能写入的共享部分称为“...

2018-09-02 17:49:32 1102

原创 Unity MVC框架(二)Model与View层使用通知交互类型

前言前一次使用的MVC框架是简单版通知类型实现,这次使用较复杂一点的方式来实现前一次MVC框架链接:https://blog.csdn.net/liaoshengg/article/details/82150287但与第一种也有区别:把发布信息与Controller类分离出NotifiCenter,使得Model层 和 View层之间进行交互而不通过Controller控制层,...

2018-08-28 21:21:39 1826

原创 Unity MVC : Model View Controller 模型视图控制器框架

MVC的架构的种类有很多,主要用在大公司大项目上。 因为使用这个框架会要做很多解耦,在后期更容易维护,移植。M Mode 数据更新,数据存储 V View 视图显示 视图按钮通知 C Control 控制 对视图和数据进行交互,可以认为是这两个层级的中介者,控制者需要注意的是 Mode一定要区分 数据存储对象,和数据更新的对象 View 同样也要区分 视图UI 和 按钮(人)交...

2018-08-28 17:19:17 1844

原创 Unity3D设计模式学习之工厂方法模式Factory Method

前言GOF对工厂方法模式的解释是 定义一个可以产生对象的接口,但是让子类决定要产生哪一个类的对象,工厂方法模式让类的实例化程序延迟到子类中实施。带来的好处: 能针对对象产生的流程定制规则; 能减少客户端参与对象生成的过程,减少客户端与该类的依赖度,便于后续的维护。工厂方法模式的实现范例工厂方法模式的实现方式并非固定第一种:由子类产生 定义一个产生对象的接口(返回...

2018-08-25 11:43:59 666

原创 Unity3D 设计模式之策略模式

前言策略模式在设计模式与完美游戏开发一书中使用,用来对角色属性的计算 GOF对策略模式的定义: 定义一组算法,并封装每个算法,让它们可以彼此交换使用。策略模式让这些算法在客户端使用使用它们 时能更加独立简单抽象Context拥有一个Startegy类的对象引用,然后通过对象引用获取想要的策略 Startegy类通过设置子类对象,来设置状态//客户端类通过Star...

2018-08-12 15:27:25 1523

原创 unity3D 简单实现A*算法

前言在两个物体之间寻找最短有效路径(Nav) 1. 学习A*思想 2. 其他算法 3. 曼哈顿(城市街区算法、直来直去) 4. 几何法(对角线,勾股定理) 5. 估算法(先对角线,再直线) 6. GHF 7. G : 从开始到当前位置的移动步数 8. H : 从当前位置到目标位置的距离,使用上面3种算法获得 9. F :G + H 的总和 10. OpenList 和 Cl...

2018-08-11 17:35:13 7091 1

原创 Unity3D 设计模式之桥接模式

前言桥接模式的GOF定义:抽象与实现分离,使二者可以独立地变化设计模式与游戏完美开发一书用了个例子举例例子当角色类有武器这个类的时候。武器类一旦需要变化,那么角色类也就需要变化,而一旦角色类变化,就要给角色类新增加武器类。此时就可以让武器类抽象出来了,给武器类做一个抽象接口类,然后让子类具体实现。此时角色类只需要一个武器接口类,具体内容让武器子类提供同样,角...

2018-08-11 11:44:20 509

原创 XLua学习 热更新步骤整理

前言前期准备 设置HotFix 设置[LuaCallSharp]XLua实现流程 1. 检测是否下载, 更新Lua脚本, 更新资源 2. 执行Lua 3. 显示内容具体办法 再写一个CS脚本来执行Lua脚本来替换原来的CS内容准备在需要更新的类上加上[Hotfix] ,这个类需要提前预判,一般来说只更新UI部分,一般不更新物体,数据类在可能更新的类方法中...

2018-08-10 19:17:34 6578 1

原创 Unity3D 学习设计模式之:中介者模式 Mediator

前言上次的外观模式用于在对外部使用(状态场景类里使用PBaseDefense类对象,来对所有子系统进行初始化,更新,结束释放)操作。然后PBaseDefense类还可以使用中介者模式,来对内部所有子系统之间的操作进行管理类的介绍中介者就是PBaseDefense类(Mediator) 而PBaseDefense里的所有子系统类就是(Colleague) 因为根据单一职责(SRP...

2018-08-05 11:22:54 750

原创 Lua 迭代器的实现

迭代器实现lua的迭代器使用了闭合函数来实现,如果对闭合函数不熟悉,可以看我的上一篇Lua的深入函数,讲解了闭合函数 https://blog.csdn.net/liaoshengg/article/details/81327114使用闭合函数来遍历集合中的元素返回值function iteratorLua(t) local i = 0 return functi...

2018-08-04 17:27:20 690

原创 Lua 错误处理函数 error()、 pcall()

error函数是让程序停止,进行错误处理如下面代码调用error函数后悔直接报错,后续程序不再执行function funC( num ) if num == 0 then error("程序发生错误") print("是否执行?") else return 100/m endendfun

2018-08-04 17:26:42 7652

原创 Lua 文件加载执行方法

前言这里需要写二个文件来做测试 FileLua用来做数据,FileLua2来加载文件 下面的代码在FlieLua2文件中调用运行loadfile()函数的参数里面需要写文件后缀.lua-- loadfile : 加载文件、不执行-- 会把加载的内容以一个函数返回-- 这个方法较麻烦,会返回一个函数,用函数接收然后调用一下local f = loadfile("File...

2018-08-04 17:25:15 6482

原创 Lua 中用table表来实现类,继承,以及面向对象

Lua没有类这一说,但是可以使用表来接近实现类的功能,实现面向对象1.创建一个文件ClassA,写objA类:注意:类实际是一个table类型的表,这里是一个类用一个单独的lua文件来存放1.1类中没有任何字段给类添加二个方法objA = {}function objA.play() print("objA.play&am

2018-08-04 17:10:07 1761 1

原创 Lua 学习元表,元方法

前言元表与元方法的概念 Lua中每个值都可具有元表。元表是普通的Lua表,定义了原始值在某些特定操作下 的行为。例如,当table作为加法的操作数时,Lua检查其元表中的”__add”字段是否有 个函数。如果有,Lua调用它执行加法。我们称元表中的键为事件(event),称值为 元方法(metamethod)。前述例子中的事件是”add”,元方法是执行加法的函数。 Lua创建新的table...

2018-08-02 16:18:48 9170 1

原创 Lua 协同程序coroutine

前言Lua协同程序: 开启另一个逻辑处理和c#一样,同一时间只能有一个协同程序被执行 线程:同一时间,可以有多个线程执行 进程:线程的一个载体,一个程序的运行独立为一个进程,进程和进程之间都有自己独立的储存单元、一个进程可以包含多个线程、多个线程之间共享存储单元。 比如打开一个手机游戏,这个游戏就有一个进程,游戏内部有很多线程同时运行,线程都有一个共享单元来获取存储数据Lua中协同程...

2018-08-01 16:45:13 364

原创 Lua闭合函数,以及内存管理

前言Lua的函数有多种使用方法 ,因为Lua内存遵循C内存管理一、闭合函数:”非局部变量生命周期受影响”闭合函数: 函数A中包含另一个函数B,函数B中使用了非局部变量(函数中A的局部变量),构成闭合函数 影响:延长了非局部变量(A函数中局部变量)的生命周期简单说就是一个函数 return了一个匿名函数,匿名函数里又外部函数的局部变量function functionB() ...

2018-08-01 14:09:39 1679

原创 Lua 八种数据类型以及基本语法

8种数据类型number 实数 ,可以是整数,浮点数string 字符串,一旦赋值不能被修改,可以通过方法string.gsub()来修改nil 全局变量没被赋值默认为nil,删除变量就赋值为 nilboolean(bool) false 和nil为假 ,其它都为真function 函数table 数组、容器userdata (类,其它语言转换过来就变成userda...

2018-07-31 20:49:41 22065

原创 unity3D 外观模式Facade

前言外观模式我认为就是在某一状态场景中,使用一个类,来统一管理所有的子系统。子系统做具体实现,如果外部需要使用,获取子系统,就通过这个类来调用获取。具体实现思路这个类在书上被称作是PBaseDefense ,被状态场景类(如战斗状态场景)使用,而PBaseDefense类里包含所有子系统的对象引用,所有可以使用所有子系统的公有方法的有这些子系统就要对这些对象引用初始化,new出...

2018-07-31 09:54:04 458

原创 unity中 类与函数、函数参数之间的花式使用方式(四)

父类不写虚方法,写公有方法,让子类调用这个公有方法,做具体实现当A类有一个B类的对象引用,B类就是这个父类,他有多个子类,当我们给A类获取具体的子类对象,通过这个对象引用调用父类的方法,...

2018-07-30 20:20:27 754

原创 unity3D 游戏工具类

前言unity 游戏工具类: 工具中提供接口,供整个游戏工程使用 游戏主循环: 状态设计模式

2018-07-30 20:13:15 1405

原创 unity3D UGUI学习 (四) ScrollView复合UI组件

ScrollViewUI物体对象可以直接创建一个ScrollView,也可以手动添加多个UI对象组件,组成一个ScrollView 这里主要讲ScrollView的组成。通过手动添加,了解ScrollView的组件脚本和UI对象ScrollRect Content就是可以滑动的窗口对象,Content一般是空的子物体。当Content的大小比其父类(父类有Mask组件)更大的时候,...

2018-07-30 19:56:06 3431

原创 unity3D UGUI学习(五) EventSystem,EventTrigger响应事件介绍

前言UGUI中EventSystem主要负责处理输入、射线以及发送事件,一个场景中 只能有一个EventSystem并且需要 BaseInputModule类型组建的协助才 能工作。EventSystem负责管理,BaseInputModule负责输 入,BaseRaycaster负责确定目标对象。UGUI中不仅可以对UI进行监测,还可以对场景中的对象进 行监测,以下会 有详细介...

2018-07-30 17:26:44 12109 1

原创 unity3D 学习UGUI (三)3个排列组件

UGUI的三个组件在Canvas下创建个空物体,依次添加这三个组件 在空物体下创建image子对象来测试 Vertical Layout Group 组内元素垂直排列 Horizontal Layout Group 组内元素水平排列 Grid Layout Group 网格排序Vertical Layout Group让子物体垂直竖向排列Horizontal L...

2018-07-27 17:48:15 6165

原创 unity3D UGUI学习 (二) 简单UI物体对象

前言这里不一一罗列属性了,而是用到什么学什么 另外:使用UGUI的对象组件就要引用命名空间using UnityEngine.UI;//UGUI命名空间这里创建一个脚本,拖到CanvasUI对象上使用Sprite图片制作因为UGUI没有图集,所以要自己做UI图片Sprite,才能拖进Image。 在网上下一个图片拖入工程,点击图片,查看检视面板 选则Sprite后...

2018-07-27 17:26:37 1578 2

原创 unity3D UGUI学习 (一) canvas 和 RectTransform

前言UGUI是unity公司请NGUI制作团队来制作的unity内置的UI组件。学习UGUI,可以先和NGUI做个比较区别, 1. NGUI有图集,UGUI没有图集的gain 2. NGUI有Depth,UGUI没有Depth深度的概念, 但UGUI根据在Canvas层次可以自上往下增长的顺序展示 可以通过代码SetSiblingIndex(int index)修改展示顺序 3...

2018-07-27 10:50:04 2231

原创 unity中 类与函数、函数参数之间的花式使用方式(三)枚举篇

前言在编写代码的时候发现,枚举也可以和函数与类有着重要的联系当我们想写有一定相同状态下,出现的不同种,多种的情况,来做特定的事时,就可以先用枚举来列出来如敌人有多种类型的时候,这时可以用到枚举把相应的敌人通过枚举来判断来创建不同类型的敌人 如敌人的类型不同,需要的死亡特效也不同,这时通过枚举给他们加上相应的判断来做不同的死亡特效 如角色不同,但是其在移动的规则都是相同的。 如斗地...

2018-07-25 17:37:25 1126

原创 Unity3D 设计模式学习:状态模式

前言

2018-07-25 17:25:52 304

原创 unity NavMesh网格寻路

前言NavMeshs是Unity自带的一个寻路系统,即一个点到另一个点寻找最短有效路径如何使用NavMesh?先直接使用便于理解,然后再介绍参数属性直接先给模型添加NavMeshAgent组件,然后自己写一个脚本,通过代码控制它 场景中烘焙(静态)障碍物 NotWalkable Navigation->Obejct ->Navigation Static -&a

2018-07-22 16:03:00 1452

原创 学习使用UML类图

前言UML在学习设计模式中是必不可少的建模图,建模语言, 在UML系统开发中有三个主要的模型: 功能模型 从用户的角度展示系统的功能,包括用例图。 对象模型 采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型 展现系统的内部行为。 包括序列图、活动图、状态图。 UML可以百度有很多解释, 这里主要是写关于UML类图的用法一、类的基本结...

2018-07-22 13:33:56 402

原创 unity3d DoTween动画插件

前言ITween 插件是较旧的动画控制插件,且制作者也不再维护,因此现在使用较少,多用DoTween。 DoTween 在执行效率更高,比ITween 更快。 在Prefabs经过测试,每个Prefabs都有一个iTween,所有Prefabs公用一个DoTween iTween使用Hastable做参数,DoTween使用函数链的形式 使用DoTween方法时要引入空间名 using...

2018-07-20 17:07:38 1532

原创 unity3d 相交球OverlapSphere

前言相交球和射线差不多,但是相交球可以对在相交球范围内的所有碰撞器都发生触碰方法。因此可以用来制作群攻,范围类型的技能判断,也可以配合帧事件来使用相交球相交球用Physics.调用,是Physics的一个静态方法,返回碰撞器数组,即当碰撞到相交球,以数组碰撞器的形式返回public static Collider[] OverlapSphere (Vector3 position,...

2018-07-18 20:56:44 4142 2

转载 unity3d HudText、UIFollowTarget 产生掉血特效

前言掉血特效往往是用2d的形式来展示 UIFollowTarget : 跟随大致思路制作流程创建对象一个是HudParent空物体,做特效生成父物体位置 一个是HudEffect空物体, UI特效 (做成预制体),包含一个HPSprite子物体对象 一个Enemy对象, 做场景敌人 (做成预制体),包含一个子物体空物体做特效的位置 一个空物体对象,用来生成敌人添...

2018-07-18 20:12:09 2373

EasyTouch.unitypackage

unity3d EasyTouch资源包,里面包含摇杆和按钮可供使用

2018-06-22

2016年考研终极冲刺800题—数据结构

数据结构考研的例题,包含真题,题目解析,用C语言来描述题目要求代码内容

2018-06-20

空空如也

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

TA关注的人

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