自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 AI运动层的一套基于加速度的基本移动方案

移动组件:using UnityEngine;using System.Collections;using System.Collections.Generic;public class MoveComponent : MonoBehaviour{ #region 字段 public float maxSpeed = 10;

2017-04-06 13:58:49 1353

原创 AI决策算法 行为树实现(二)

顺序节点:SequenceNode并行节点:ParallelNode ( 当一个节点不通过就不执行 )并行节点2:ParallelFlexibleNode ( 当所有节点不通过才不执行 )选择节点: PrioritySelectorNode实现:顺序节点:SequenceNodenamespace BehaviorTree{ publi

2017-03-30 15:34:29 1043

原创 AI决策算法 行为树实现(一)

本系列文章部分内容参考自 https://zhuanlan.zhihu.com/p/19890016?columnSlug=indiegamepixel 感谢原作者的知识分享行为树包括 :基础节点:BaseNode前置条件节点:PreconditionNode顺序节点:SequenceNode并行节点:ParallelNode ( 当一个节点不通过就不执行 )并

2017-03-30 15:32:20 3913

原创 AI决策算法 之 GOAP (三)

源码地址:http://pan.baidu.com/s/1dFwzmfB这篇我们使用上篇文章写的GOAP框架来完成一个实例:实例内容:AI有10HP, 需要去站岗,站岗2秒钟扣5HP当HP根据GOAP框架逻辑推断出需要:AI数据提供者,站岗Action,补充HPAction,HP点脚本,站岗点脚本, AI属性脚本主要脚本:

2017-03-29 11:51:50 2804

原创 AI决策算法 之 GOAP (二)

GOAP 的主要逻辑:1.Agent的状态机初始化Idle状态2.Idel状态根据IGoap提供的数据,通过Planer得到最优路线3.Agent的状态机转换状态到PerformAction状态4.PerformAction状态解析路线,执行路线的动作队列5.如果动作需要到范围内,切换到MoveTo状态移动到目标范围,否则执行动作队列6.当全部动作执行完毕,告诉IGoap目

2017-03-28 15:19:49 6226

原创 AI决策算法 之 GOAP (一)

本系列文章内容部分参考自:http://gamerboom.com/archives/83622什么是GOAP?  引用原文的一句话 : 目标导向型行动计划(简称GOAP)是一种能够轻松呈现给你的代理选择的AI系统,也是帮助你可以无需维持一个庞大且复杂的有限状态机而做出明智的决策的机器。用处:以前我们经常使用FSM有限状态机来实现AI系统,但是当一个游戏

2017-03-28 10:10:23 9177

原创 strange IOC框架 塔防游戏实例应用 (五)

源码地址:          (注 : 当时没写完的Demo工程,主要看看MVC分层)应用场景: 开始关卡顺序逻辑:Viiew的Mediator里监听开始关卡按钮 -》 把参数传递发出开始关卡事件 -》 Command与Model交互并读取参数开始相应关卡1.Mediator代码public class Mediator_Select : EventMedi

2017-03-23 11:11:29 867

原创 strange IOC框架 塔防游戏实例应用 (四)

源码在最后放上应用场景: 进入游戏开始计时顺序逻辑: 进入场景发出View层事件 -》 View的Mediator接收 -》调用View触发-》发出结束事件1.进入场景发出View层事件 IEnumerator StartCount() { yield return new WaitForSeconds(0f);

2017-03-23 11:02:52 821

原创 strange IOC框架 塔防游戏实例应用 (三)

源码在最后一章放上应用场景:游戏结束顺序逻辑: View层的Mediator发出结束事件 -》 Command与Model交互做出对应处理 -》把与Model交互的数据派发给View1.View层的Mediator发出结束事件void On_city_Dead(Object_Role role) { if (View_Spawner.

2017-03-23 10:00:23 862

原创 strange IOC框架 塔防游戏实例应用 (二)

源码在最后一章放上应用场景:点击地图弹出相应炮塔弹窗分层逻辑: 地图View点击 —>  发出地图事件 —> 地图根据参数做出反应 —>与Model层交互数据并把数据传输到相应View层做出反应 1.地图View点击发出事件 void OnMapTileClick(int mouseButton, Data_Tile tile) {

2017-03-23 09:51:42 964

原创 strange IOC框架 塔防游戏实例应用 (一)

源码在最后一章放上应用场景:进入对应的场景触发相应的逻辑  1.加载场景时发出事件 void OnLevelWasLoaded(int level) { Args_Scene e = new Args_Scene() { level = level }; //把场景Index传过去 dispatcher.Dispa

2017-03-23 09:40:14 2033

原创 Unity框架 测试Demo 工程源码

应部分网友请求,在此放上当时测试框架用的一个Demo 工程

2017-03-21 09:25:18 1520 1

原创 关于Unity中的框架层 和 应用层

以前经常分不清框架的实际含义,以为每个游戏都会单独写一个框架,框架应该都是一定的局限性,其实不然,大部分重复的功能抽象出来的可重用的才是框架部分。关于框架层:游戏中的底层代码,像UI框架,资源管理器,MVC分层框架,对象池等,都是为了更好的管理,分好结构,提高性能,而不是为了实现具体的需求,这部分就是框架层。关于应用层:策划给的具体需求,大到整个游戏的流程,

2017-03-09 12:16:16 3186

原创 【StrangeIOC框架】 通过一个实例来理解MVCS结构

StrangeIOC框架 是Unity一个开源的框架,在asset store上可以获取,我们主要是学习它的架构思想,架构如下:注:本文需对StrangeIOC有一定了解,如注入等;我们假设要实现一个: 发起游戏结束事件,显示游戏结束面板,更新显示游戏结束信息的这样一个功能,怎么实现呢?大体结构如下:1.发起Command事件2.派发Vi

2017-03-08 12:33:11 1097

原创 Unity客户端优化之CPU(二):GC

GC 垃圾回收机制作用:管理托管堆(托管堆:引用类型会被分配到托管堆上,如类实例,字符串,数组等)的内存释放,当堆内存不足时,会自动调用GC,其次也可以手动调用。为什么要在CPU上优化GC呢?因为虽然GC是用来处理内存的,但是却是由CPU来调用,当量大的时候对CPU的负担就很大了。所以,优化GC的方法就是:减少GC的触发优化:

2016-08-25 09:15:43 1656 4

原创 基于MVC架构写一个UI框架

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。(摘自百科)优点: 耦合性低  重用性高  可维护性高  生命周期成本低

2016-08-19 12:23:38 4202

原创 游戏开发常用设计模式(一):观察者模式

观察者模式也称订阅者模式,看百度中的一个通俗解释:报社的任务便是出版报纸。向某家报社订阅他们的报纸,只要他们有新的报纸出版便会向你发放。也就是说,只要你是他们的订阅客户,便可以一直收到新的报纸。如果不再需要这份报纸,则可以取消订阅。取消之后,报社便不会再送新的报纸过来。报社和订阅者是两个不同的主体,只要报社还一直存在着,不同的订阅者便可以来订阅或

2016-08-16 08:31:18 1407

原创 Unity客户端优化之CPU(一):DrawCall

提起DrawCall,大部分人的反应是GPU方面的优化,其实不全是,DrawCall是什么呢?是对底层图形程序接口的调用,用以在屏幕上渲染出东西来,那么是谁来调用底层图形程序接口呢?自然是CPU了。那么我们知道了这个原理后怎么去优化呢?假设有上千个物体,每一个渲染都要去调一次底层接口,一次调用CPU需要做很多工作,那么对CPU会造成很大的负担。而对于GPU来说,图形处理的工作量是一

2016-08-14 08:15:22 3098

原创 框架的应用(一):对象池

应用场景:战争游戏中的角色生成和销毁,因为战争游戏存在大量的生成角色和销毁角色,所以如何去节约性能很重要,对象池可以解决这个问题看这一关于生成士兵的代码片段: GameObject go = ObjPool.Instance.OnGetObj("Soldier1", "Prefabs/Soldier/");

2016-08-07 08:13:01 1742

原创 Unity 客户端框架(六):UI框架

引自百度:编写UI框架意义打开,关闭,层级,页面跳转等管理问题集中化,将外部切换等逻辑交给UIManager处理功能逻辑分散化,每个页面维护自身逻辑,依托于框架便于多人协同开发,不用关心跳转和显示关闭细节通用性框架能够做到简单的代码复用和"项目经验"沉淀这个UI框架不区别于NGUI与UGUI,通用public abstract class Bas

2016-08-06 08:18:04 14904 11

原创 Unity 客户端框架(五):对象池

关于对象池,引用百度上的一句话:对象池使用的基本思路是:将用过的对象保存起来,等下一次需要这种对象的时候,再拿出来重复使用,从而在一定程度上减少频繁创建对象所造成的开销。简单的来说就是: 重复利用对象,减少创建和销毁对象的性能消耗public class ObjPool : Singleton{ //实例池对象 private static GameObject

2016-08-05 08:41:10 2163

原创 Unity 客户端框架(四):资源管理器

资源管理器,顾名思义就是加载资源用的作用:当一个项目非常庞大的时候,我们不可能每次都手动去加载释放,这时候需要一个管理器来帮我们实现并管理他们目前并不完整//资源类 public class AssetInfo { //资源对象 private UnityEngine.Object _Object; //资

2016-08-04 08:17:42 5951 3

原创 Unity 客户端框架(三):消息机制

消息机制是基于观察者模式的一种机制,MVC模式被广泛使用,举例说明:当人物被攻击血量减少的时候,我们要通知所有带有血量需要改变的对象,比如:血量条UI等等为什么要使用:解耦合,降低模块之间的关联性,比如装备面板和属性面板之间的互调等等本文的消息节点优先排序性能低下,有什么的好的建议可以指教指教//消息中心 public class EventCenter

2016-08-03 08:24:00 4583

原创 Unity 客户端框架(二):单例基类

什么是单例类?服务于:保证一个类仅有一个实例,并提供一个访问它的全局访问点。比如怪物管理器,音乐管理器,场景管理器等为什么要有单例基类?如果每个单例类都要实现一次单例模式,那么代码重复性会很严重,代码量会增加很多,所以这时候需要有一个基类用于继承这是用于不需要继承至MonoBehavior的://T是一个类,可以new()的 public abstract class

2016-08-02 08:24:57 2940

原创 Unity 客户端框架(一):有限状态机

有限状态机是把一个对象的行为分解称为易于处理的“块”或状态。例如,灯的开关,就是一个简单的有限状态机。为什么要用?通常,在一个程序里面,转换各种状态,需要使用一系列的if-then语句或者switch语句。如果内容少的话这会很容易理解,也合理,但是当内容非常庞大的时候,这时候这种方法写的代码就如一个怪物,这时候FSM就出现了。代码如下:public class

2016-08-01 08:16:49 3045

空空如也

空空如也

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

TA关注的人

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