这里简单演示,playmaker如何调用脚本中的方法,以及脚本如何调用playmaker。
先在场景里添加一个盒子
在cube上
添加ForceButton、Rotate状态,
添加spin_cube事件
在ForceButton状态下添加GUI Button动作
新建脚本 RandomRotCube,并将脚本添加为Cube的组件
using UnityEngine;
using System.Collections;
public class RandomRotCube : MonoBehaviour {
private float rotAmount;
public void RandRotCube(){
rotAmount = Random.Range (-40, 40);
print (rotAmount);
transform.rotation = Quaternion.Euler (0f, rotAmount, 0f);
}
}
在Roatate状态下添加Send Message动作。
设置send Message中的方法名称是脚本中需要调用的方法名。
运行预览,点击按钮后,方块随机转一个角度。
要传递参数也很方便,添加一个方法,带参数的,
using UnityEngine;
using System.Collections;
public class RandomRotCube : MonoBehaviour {
private float rotAmount;
public void RandRotCube(){
rotAmount = Random.Range (-40, 40);
print (rotAmount);
transform.rotation = Quaternion.Euler (0f, rotAmount, 0f);
}
public void ApplyForce(float userForce){
GetComponent<Rigidbody> ().AddForce (0f, userForce, 0f);
}
}
给方块添加刚体组件,在Rotate状态下再添加一个Send Message,并设置方法名称和参数
运行预览,点击按钮后,方块不但会转还会跳起来。
接下来是在脚本里调用playmaker。
在场景里添加一个带GUI Text的游戏对象,在其下面添加Listener、Random状态和SetNumber事件
添加String类型参数 currentNumber和Int类型参数radInt
在Random状态下添加动作,Random Int、Convert Int To String和Set GUI Text,随机出一个整数以后再GUI Text上显示。
修改GameObejct的名称
新建一个脚本
using UnityEngine;
using System.Collections;
public class CallFSM : MonoBehaviour {
private PlayMakerFSM fsm;
void Start(){
fsm = GameObject.Find ("GUITextShow").GetComponent<PlayMakerFSM> ();
}
void OnGUI(){
if (GUI.Button (new Rect (100, 100, 100, 100), "script call")) {
fsm.Fsm.Event ("SetNumber");
}
}
}
将脚本添加为组件
运行预览,点击script call按钮,会随机显示整数。