PlayMaker属于一个可视化的状态机编辑工具,集成到了Unity的IDE里,在Unity的市场上很受欢迎,本人看见后第一感觉是跟CryEngine的那个状态机特别相似。CE的那个状态机编辑器其实是很难用的,研究过的同学纷纷表示事倍功半。从过去的经验上看,这种可视化的状态机编辑器适合于批量的生产,而且能让逻辑很清楚,说到底是图形嘛,不然还得再画一篇UML图,如果你梳理过复杂的状态机就会知道,画图能提高并使你的设计思路清晰。从工作量来说,例如,新手引导,每一个功能也许都会有一个新手引导,以前的做法是需要程序员们写一堆的代码。写新手引导,要了解状态机,要了解各种事件的触发机制,对一个新手来说,学习曲线还是有的。如果评估工作量的话,一个中等复杂度的新手引导功能,需要一个熟手两天的时间来完成功能并测试。而如果有好用的工具的话,对一个新手,大概需要1天就够了,这就是工具化所带来的效率提升。看起来很美好,但实际上这种美好需要游戏引擎的整体框架要有良好的分层设计。

  关于其他人说的PlayMaker所产生的问题。首先, 从playmaker的产出来看应该是一组状态机的代码。那么问题来了,一个是编译的时间问题,你要生成那么多的C#代码,势必要增加编译过程的时间,这个也许可以通过代码分割来解决,但肯定避免不了最后的全部编译时间。另外, 不是说所有的对象都要用状态机去控制。playmaker的状态机都是控制gameobject(这里存疑,也许不是),但其实有的状态控制代码是不控制gameobject的,也许只是逻辑上的关系,例如版本更新,是由网络消息流来驱动的。另外效率问题,playmaker应该是会带来很大量的脚本,那么运行起来会不会出现卡顿等等问题呢?从之前的经验看,卡顿主要是IO,实例化这些,单纯逻辑上的运算不可以产生明显卡顿,否则就需要优化了。其实这个编辑工具只能让程序员来使用,至少在功能稳定前,程序员们要明确知道里面都有什么内容。然后就是可视化状态机所带来的复杂度问题,Playmaker会让你把函数功能极小化,这样会导致非常庞大的功能函数库?当然,如果设计的好,也许能在很大程度上减小这个问题。其实这个也是面向对象的要求嘛,把处理单元尽可能减小。

  显而易见的结论是什么呢?复杂的系统用PlayMaker来进行原型设计将会非常合适,而如果要关注效率呢,那就要手动写代码。当然如果效率不是问题,其实也可以将我们的Actions封装到一个库里,然后提供给策划们去组装。这对策划就要求很高了,不过程序可以协助来做。复杂的系统,像版本更新流程,AI,UI对话框树(对话框体系),切场景进度条,新手引导,角色状态管理(寻路,打怪等等状态)。

  另外整个游戏的状态机该如何设计?我想的话最好是用PlayMaker把现有的代码进行一次整理,如果用playmaker能完整地完成现有的功能,那么产品化自然就没问题。从之前用状态机的经验来看,务必要把层次梳理清楚,千万不能多层次嵌套,用好命名空间,甚至于每个状态机单元都要有自己的命名空间。

PlayMaker的应用的更多相关文章

  1. 转一篇关于Unity的PlayMaker

    这篇文章转自http://va.lent.in/should-you-use-playmaker-in-production/ 此文作者大概深受其苦,吐槽了playmaker的多个蛋疼的地方,这其实说 ...

  2. PlayMaker 学习笔记

    1.v1.7.8.3版本无法使用全局变量,原因是Assets\Plugins\PlayMaker下的Resources文件夹变成中文了,无法创建全局变量文件,手动创建一个Resources文件夹即可

  3. Playmaker Input篇教程之引入的核心概念

    Playmaker Input篇教程之引入的核心概念 Playmaker Input引入的核心概念 Playmaker引入了4个核心概念:状态机.动作.变量和事件.了解它们是学习操作Playmaker ...

  4. Playmaker Input篇教程之PlayMaker菜单概述

    Playmaker Input篇教程之PlayMaker菜单概述 Playmaker InputPlayMaker菜单概述 Playmaker插件被导入游戏项目以后,会自动为Unity编辑器添加一个名 ...

  5. Playmaker Input篇教程之Playmaker购买下载和导入

    Playmaker Input篇教程之Playmaker购买下载和导入 Playmaker Input篇认识Playmaker Playmaker是Unity的插件,其标志如图1-1所示.开发者使用它 ...

  6. Playmaker 基础使用与案例操作

    首先是把下载好的插件导入Unity工程中. ▼导入完成后第一个动作就是检查下拉菜单里面是否已经增加了Playmaker的功能,如果在安装后没看到Playmaker的菜单,一般情况下直接点击菜单上的空白 ...

  7. Playmaker全面实践教程之Playmaker常用工具

    Playmaker全面实践教程之Playmaker常用工具 Playmaker常用工具 Playmaker插件搭载了8个工具:FSM Browser.State Browser.Templates.T ...

  8. Playmaker全面实践教程之简单的使用Playmaker示例

    Playmaker全面实践教程之简单的使用Playmaker示例 简单的使用Playmaker示例 通过本章前面部分的学习,相信读者已经对Playmaker有了一个整体的认识和印象了.在本章的最后,我 ...

  9. Playmaker全面实践教程之playMaker编辑器

    Playmaker全面实践教程之playMaker编辑器 playMaker编辑器 playMaker编辑器是制作状态机的主要视图,如图1-23所示.只有熟悉此视图,读者才能更加快捷的使用Playma ...

随机推荐

  1. 关于checkbox的全选和反选实例

    <script type="text/javascript"> $(function () { $("#checkAll").click(funct ...

  2. PresentViewController切换界面

    视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画, 其中切换方法如下: – presentViewCon ...

  3. 深入理解Javascript--作用域和赋值操作

    作用域作为一个最基础的功能存在于各种编程语言中,它使得我们的编程更加灵活有趣.其基础功能就是存储变量中的值,然后可以对值进行访问和修改. 可能我们都知道作用域的一些概念,以及其一些扩展的一些内容闭包等 ...

  4. Android 手机卫士--是否有密码区分对话框类型

    本文开始逐步实现设置中心的“手机防盗”功能模块 本文地址:/www.cnblogs.com/wuyudong/p/5939123.html,转载请注明出处. 点击“手机防盗”,如果之前没有设置过密码, ...

  5. # iOS 10 适配 # 适配刷新控件 以MJRefresh 为例

    在iOS10中ScrollView 添加了一个refreshControl的东西 - - 不知道水果公司做了什么  导致原有的刷新控件类刷新后frame.y 向下偏移了20 起初以为是水果调整了sta ...

  6. Linux文件和目录权限详细讲解

    转载请标明出处: http://www.cnblogs.com/why168888/p/5965180.html 本文出自:[Edwin博客园] Linux文件和目录权限解读 如何设置Linxu文件和 ...

  7. J2ObjC 1.0 发布,将 Java 转换为 Objective-C

    J2ObjC 是一个Google开发的开源工具,用于将Java代码转换为Objective-C代码.其目的是为了能在iOS平台上重用Android平台.web服务器端的Java代码.服务器端代码的转换 ...

  8. CentOS 6.5 安装 MySQL5.6 并用Navicat for MySQL 连接

    环境 : MySQL 5.6.21 64位 CentOS 6.5 64位 VMware 10 Navicat for MySQL 11 1.卸载自带mysql [root@localhost  ~]# ...

  9. Oracle数据泵(Data Dump)错误汇集

    Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一些自己使用数据泵(Data Dump)过程当中遇到的问题以及解决方法.都是在使用过程中遇到的问题,以后陆 ...

  10. CentOS7 虚拟机搭建、初始设置、简单使用

    注:虚拟机安装的系统是CentOS7 1.网络设置 网络的设置主要是为了让虚拟机和物理机能够相互ping通,这样就可以用XShell之类的工具操控,也可以上网 见另一篇 CentOS7网络配置 2.物 ...