PlayMaker的应用
PlayMaker属于一个可视化的状态机编辑工具,集成到了Unity的IDE里,在Unity的市场上很受欢迎,本人看见后第一感觉是跟CryEngine的那个状态机特别相似。CE的那个状态机编辑器其实是很难用的,研究过的同学纷纷表示事倍功半。从过去的经验上看,这种可视化的状态机编辑器适合于批量的生产,而且能让逻辑很清楚,说到底是图形嘛,不然还得再画一篇UML图,如果你梳理过复杂的状态机就会知道,画图能提高并使你的设计思路清晰。从工作量来说,例如,新手引导,每一个功能也许都会有一个新手引导,以前的做法是需要程序员们写一堆的代码。写新手引导,要了解状态机,要了解各种事件的触发机制,对一个新手来说,学习曲线还是有的。如果评估工作量的话,一个中等复杂度的新手引导功能,需要一个熟手两天的时间来完成功能并测试。而如果有好用的工具的话,对一个新手,大概需要1天就够了,这就是工具化所带来的效率提升。看起来很美好,但实际上这种美好需要游戏引擎的整体框架要有良好的分层设计。
关于其他人说的PlayMaker所产生的问题。首先, 从playmaker的产出来看应该是一组状态机的代码。那么问题来了,一个是编译的时间问题,你要生成那么多的C#代码,势必要增加编译过程的时间,这个也许可以通过代码分割来解决,但肯定避免不了最后的全部编译时间。另外, 不是说所有的对象都要用状态机去控制。playmaker的状态机都是控制gameobject(这里存疑,也许不是),但其实有的状态控制代码是不控制gameobject的,也许只是逻辑上的关系,例如版本更新,是由网络消息流来驱动的。另外效率问题,playmaker应该是会带来很大量的脚本,那么运行起来会不会出现卡顿等等问题呢?从之前的经验看,卡顿主要是IO,实例化这些,单纯逻辑上的运算不可以产生明显卡顿,否则就需要优化了。其实这个编辑工具只能让程序员来使用,至少在功能稳定前,程序员们要明确知道里面都有什么内容。然后就是可视化状态机所带来的复杂度问题,Playmaker会让你把函数功能极小化,这样会导致非常庞大的功能函数库?当然,如果设计的好,也许能在很大程度上减小这个问题。其实这个也是面向对象的要求嘛,把处理单元尽可能减小。
显而易见的结论是什么呢?复杂的系统用PlayMaker来进行原型设计将会非常合适,而如果要关注效率呢,那就要手动写代码。当然如果效率不是问题,其实也可以将我们的Actions封装到一个库里,然后提供给策划们去组装。这对策划就要求很高了,不过程序可以协助来做。复杂的系统,像版本更新流程,AI,UI对话框树(对话框体系),切场景进度条,新手引导,角色状态管理(寻路,打怪等等状态)。
另外整个游戏的状态机该如何设计?我想的话最好是用PlayMaker把现有的代码进行一次整理,如果用playmaker能完整地完成现有的功能,那么产品化自然就没问题。从之前用状态机的经验来看,务必要把层次梳理清楚,千万不能多层次嵌套,用好命名空间,甚至于每个状态机单元都要有自己的命名空间。
PlayMaker的应用的更多相关文章
- 转一篇关于Unity的PlayMaker
这篇文章转自http://va.lent.in/should-you-use-playmaker-in-production/ 此文作者大概深受其苦,吐槽了playmaker的多个蛋疼的地方,这其实说 ...
- PlayMaker 学习笔记
1.v1.7.8.3版本无法使用全局变量,原因是Assets\Plugins\PlayMaker下的Resources文件夹变成中文了,无法创建全局变量文件,手动创建一个Resources文件夹即可
- Playmaker Input篇教程之引入的核心概念
Playmaker Input篇教程之引入的核心概念 Playmaker Input引入的核心概念 Playmaker引入了4个核心概念:状态机.动作.变量和事件.了解它们是学习操作Playmaker ...
- Playmaker Input篇教程之PlayMaker菜单概述
Playmaker Input篇教程之PlayMaker菜单概述 Playmaker InputPlayMaker菜单概述 Playmaker插件被导入游戏项目以后,会自动为Unity编辑器添加一个名 ...
- Playmaker Input篇教程之Playmaker购买下载和导入
Playmaker Input篇教程之Playmaker购买下载和导入 Playmaker Input篇认识Playmaker Playmaker是Unity的插件,其标志如图1-1所示.开发者使用它 ...
- Playmaker 基础使用与案例操作
首先是把下载好的插件导入Unity工程中. ▼导入完成后第一个动作就是检查下拉菜单里面是否已经增加了Playmaker的功能,如果在安装后没看到Playmaker的菜单,一般情况下直接点击菜单上的空白 ...
- Playmaker全面实践教程之Playmaker常用工具
Playmaker全面实践教程之Playmaker常用工具 Playmaker常用工具 Playmaker插件搭载了8个工具:FSM Browser.State Browser.Templates.T ...
- Playmaker全面实践教程之简单的使用Playmaker示例
Playmaker全面实践教程之简单的使用Playmaker示例 简单的使用Playmaker示例 通过本章前面部分的学习,相信读者已经对Playmaker有了一个整体的认识和印象了.在本章的最后,我 ...
- Playmaker全面实践教程之playMaker编辑器
Playmaker全面实践教程之playMaker编辑器 playMaker编辑器 playMaker编辑器是制作状态机的主要视图,如图1-23所示.只有熟悉此视图,读者才能更加快捷的使用Playma ...
随机推荐
- 如何基于OM模型使用C#在程序中给SharePoint的BCS外部数据类型的字段赋值
概述: 外部内容类型和数据,SharePoint从2010这个版本开始就对BCS提供非常强大的支持,点点鼠标就可以取代以前直接编辑XML的方式来设置SharePoint到SQL数据库的连接.非常方便地 ...
- ListDefinition Tips
1)ListTemplate.Type位数不能太长(最长7位),否则启用内容类型后,列表设置中会抛异常. <ListTemplate Name="List1" Type=&q ...
- Android Fragment使用(一) 基础篇 温故知新
Fragment使用的基本知识点总结, 包括Fragment的添加, 参数传递和通信, 生命周期和各种操作. Fragment使用基础 Fragment添加 方法一: 布局里的标签 标识符: tag, ...
- [转]Design Pattern Interview Questions - Part 1
Factory, Abstract factory, prototype pattern (B) What are design patterns? (A) Can you explain facto ...
- [原创]python之socket-ftp
今天来讲讲ftp文件下载,感觉挺有趣的,知道吧,就那种看到新文件生成,而自己写的代码也不多,那种成就感! 一.需求: 客户端发送指令给服务端,服务端根据指令找到相应文件,发送给客户端 分析: PS:e ...
- [Unity游戏开发]向量在游戏开发中的应用(三)
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51088236 在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景.本 ...
- MongoDB安装及配置成服务
最近接收了个新项目,这个项目用到了很多之前没用过的(MongoDB.Redis.MVC5+EF6 等等),以前只是看过别人用,自己从未尝试,唯独用了MVC2+EF4,可能是我落伍了,不扯了,进入正题. ...
- 功能强大而又简单易学的编程语言Python
Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大的通用型语言.首先,Python非常简单,以Hello World为例: Java的Hello World程序一般这么写: pub ...
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript ...
- jQuery标签选择器
$(function() { //alert("hello jquery"); //选择器 //id选择器 $("#bt1").click( function( ...