1. 基本使用
- PlayerMaker->PlayerMaker Editor 打开面板
- 选中要应用PlayMaker的物体,在state面板中右键添加state,为其创建两个状态
- 在event中Add Event,为状态机添加两个事件。其尾部的Used表示被使用次数。
- 回到state面板,右键一个state,在 Add Transition 中为state添加一个刚才在event中添加的事件。
如果想删除这个添加的事件,可以右键事件点击Delete Transition - 点击state上添加的事件,向外拖拽箭头到另一个state,从而让事件触发时,物体状态从a转换到b
- 选中其中一个状态,点击state面板,点击Action Browser添加行为。可选GUI->GUI Button添加一个按钮行为,该按钮仅在该状态下显示。
- 修改GUI Button参数,其中 Send Event 允许在点击按钮后发送事件,注意选取自身有的事件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ddf68846fed14141884a478e84ba7ef0.png)
- 注意:预制体想要修改可选择修改实例,或修改预制体。
2. 自定义变量
- PlayMaker 允许自定义变量。可在第四栏中配置自定义变量及其所属类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/e61a0620b0c14ef79c595822d2fce68c.png)
点击设置可配置全局变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/eae6268b59fc464ba9414284141a7807.png)
- 在参数列表中,有等于号的地方便是可以使用变量的地方。
![在这里插入图片描述](https://img-blog.csdnimg.cn/47e2fa380cc84b96a24a849789f94e84.png)
- 若想保存变量,可在存在
Store XXX
(如Get脚本)设置 Store 为保存的到的变量中。注意必须同一类型,且使用在赋值之后
2. 特殊事件
- FINISHED 事件:会在当前状态的所有脚本运行完毕后运行该事件
3. 特殊状态池
- Trigger Event 触发器,会监听触发器直到特定类型的物体进入触发器后,触发特定事件
![在这里插入图片描述](https://img-blog.csdnimg.cn/dfcc14e09c52457d86608cf9e0c8b381.png)
- Set Visibility 设置物体的材质渲染(Mesh Renderer)是否显示.
若勾选 Reset On Exit 则会在离开状态后恢复原状态。 - Create Object 创建对象。
名称 | 描述 |
---|
GameObject | 游戏对象 |
Parent | 父对象 |
Spawn Point | 坐标位置,未设置默认世界坐标原点 |
Position | 偏移量 |
Rotation | 旋转角 |
- Rotate 自动旋转
名称 | 描述 |
---|
Angle | 单位时间旋转量,默认为帧 |
Per second | 以秒为单位 |
Every Frame | 每帧都调用 |
- Destroy 删除对象
- Set Materical Color 设置物体材质的颜色。如不指定材质则为物体上的材质。否则为本地材质。
- Set Int Value 设置变量值
- Int Add 将一个int值增加指定数值。
- Get Random Object 通过标签获得一个随机物体
- Get Mouse Button Down 鼠标按下(注意一旦触发,如未发生等待直接回到该状态时仍会继续触发。)
- Translate 控制对象的移动
- Translate Position 用物理组件控制对象的移动
- Set Position 设置位置
- Camera Fade Out 屏幕变黑
- Restart Level 重启场景
4. 事件发送
- 若想发送给不同物体上一个事件,需先定义一个全局可用的事件。只需勾选事件旁边的单选框即可设置为全局事件
![在这里插入图片描述](https://img-blog.csdnimg.cn/435734939c6a4d75961b1848b14a924f.png)
- 设定事件目标为FSM状态机,确定游戏对象以及FSM状态机名称(PlayerMakerFSM组件上的),发送全局事件
![在这里插入图片描述](https://img-blog.csdnimg.cn/88046f7521474a8bbf94400b5e8576cb.png)
| 种类 | 描述 |
|–|–|
| GameObjectFSM | 游戏对象,自己选定FSM状态机名称 |
| FSMComponent | 特定的FSM状态机 |
| BroadcastAll | 所有FSM状态机(可选包不包含自身) |
5. 事件
- Playmaker 允许将自定义事件作为起点,这时触发该事件时会跳转到该位置,优先于自身相同事件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/5433c072693445ad95b54627097d9ca5.png)
- Send Message 组件可给C#代码发消息,等同于Unity的发消息,写入方法名称以及参数即可。
- 以下代码可给fsm状态机发送消息。
GetComponent<PlayMakerFSM>().SendEvent("new");
5. 条件判断
- Compare组件表可比较两个值
- 勾选 Every Frame 以在某个特定的时间点触发事件