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. SharePoint 2013 工作流之Visual Studio开发示例篇

    SharePoint 2013引用了WF4.0 Foundation,支持使用Designer和Visio进行设计,但是功能受限,而Visual Studio可以开发功能更加丰富的工作流,下面我们简单 ...

  2. SharePoint 2016 图文安装教程

    前言 SharePoint 2016如约而至,之前也装过预览版,但是这次是正式版,还是分享一个完整的安装过程给大家,希望能给有需要的人有所帮助. 1.首先安装操作系统,我这里是Windows Serv ...

  3. 好神奇的代码,可以让匿名用户对特定SharePoint 列表拥用添加列表项的权限哦

    如果你不使用代码,很难从界面上去设置列表的匿名用户(如果可以请告诉我,我会自动删除这个博文)拥有列表项的添加权限. 其实这种需求是非常必要的,比如: 1.允许新用户去提交一个注册申请, 2.在召集临时 ...

  4. IOS开发基础知识--碎片39

    1:UIWindow知识点 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDict ...

  5. 使用Intellij IDEA搭建Ext JsMVC web项目

    由于自己从android开发转来学习web开发,最近在学习Jsp,之前接触过一点Extjs,所以用jsp来配合ext试试. Ext JS介绍 extjs是一个javascript框架,它的好处就是有它 ...

  6. ThinkPHP3快速入门教程-:基础

    一.ThinkPHP的认识: ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架. 二.下载后的目录结构: ├─ThinkPHP.php     框架入口文件 ├─Commo ...

  7. 分享dubbo.xsd和idubbo.xsd的可用地址

    dubbo.xsd和idubbo.xsd的官方地址不可用 http://code.alibabatech.com/schema/dubbo/dubbo.xsd似乎挂了,真是淡淡的忧伤啊,然后就各种报错 ...

  8. C语言递归,非递归实现翻转链表

    翻转链表作为,链表的常用操作,也是面试常遇到的. 分析非递归分析: 非递归用的小技巧比较多,很容易出错. 递归分析比较简单,在代码里面 代码: #include<stdio.h> #inc ...

  9. RMAN异机还原遭遇ORA-19698错误案例

    实验环境:               操作系统    :Oracle Linux Server release 5.7 64 bit               数据库版本:Oracle Datab ...

  10. 如何查看MapReduce执行的程序中的输出日志

    我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...