签到

05月05日
尚未签到

共有回帖数 0

    幻梦如戏

    等级:
    贴吧中使用StateMachine类型插件的用户应该不少,我用了段时间playMaker和uScript,发下小总结。如有偏颇、错误,请告知。


    PlayMaker

    优点
    1、基于PlaymakerFsm Component,内核在该组件中进行,Fsm中的设置全部序列化,不用编译。
    2、有基于实例化在场景中的GameObject所在的Fsm的Runtime Debugging。这个非常牛逼
    比如两个同样的Fsm,但实例化出来2个GameObject,选择一个后就只会Debug当前选择。
    3、进入某一个State之后,只会执行该State里的Action相应代码,不会涉及到非当前的State代码,这个比较清晰,相比uScript里所有Action.Update()都会在宿主Update的时候一起调用。
    4、有比较好的Fsm之间的通讯方式,虽然EventInfo不够详细,但可扩展。
    5、有Template之说,可以大量重用已有的解决方案。包括在一个Fsm中运行一个基于Template的SubFsm。


    缺点
    1、参考优点1中所述,大量的序列化的数据保存,比如Fsm对象,State,Action都有序列化的值,可能会增加Build后的尺寸
    2、Fsm的Variables中,无法添加Array类型。比如FsmBool[] 没有,只有FsmBool,这不是扯么~~~~。不过正在研究添加一套Array操作的Actions来解决一下。
    3、制作成Prefab之后,场景中实例出来的以及Prefab本身,都会在PlayMaker编辑器窗口罗列出来,有很多Fsm时,来回切换选择时比较麻烦,而且Instance和Prefab的修改要唯一,否则很容易互相覆盖修改,导致出现奇怪的问题(特别是删减Variables时)。建议要么只修改Instance的Go,然后Apply,要么只修改Prefab来引起Instance的更新。

    uScript

    优点
    1、编译出最终代码,比较干净清晰,少量序列化的值
    2、能Reflect任何已有类的变量、Property、方法等,对已有插件或代码组件的支持比较好。
    3、有Nested Graph之说,可以嵌套Graph
    4、uScript还比较新,才1.0.25xx的版本,可以给他一个提升的期望空间~。

    缺点
    1、Debug不方便,不清晰,可参考playMaker优点2。
    2、每个带Update的Action,都会在宿主的Update中调用,即使未运行到该Action。如果自己写的Action的Update没考虑这个,增加了很多复杂操作,会拖性能。
    3、尚未发现比较现成的Graph之间的通讯方式,除了SendMessage。
    4、Graph中私有变量无法赋值,特别是静态资源,比如一个AudioClip变量,无法直接赋值到Asset中的xx.wav。只有’Exposed to Unity’之后,才可以在被赋予Graph对应的组件赋值,有点傻。

    楼主 2015-10-28 21:01 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知