PlayMaker 对 PlayMakerFSM 里变量的操作

Posted 朋丶Peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PlayMaker 对 PlayMakerFSM 里变量的操作相关的知识,希望对你有一定的参考价值。

HutongGames.PlayMaker; //需要引用这个命名空间

红色的字体是对变量的操作,其他的没啥关系.

#region 判断为 PlayMakerFSM 组件时
            if (behaviour.GetType() == typeof(PlayMakerFSM))
            {
                PlayMakerFSM temp_PlayMakerFSM = behaviour as PlayMakerFSM;
                compKey = temp_PlayMakerFSM.Fsm.Name;//拿到状态机的名字,如 FSM01

                #region 操作 float 类型的变量(其他类型的变量也类似)
                //拿到 PlayMakerFSM组件 的所有Float类型的变量值,存在数组里
                NamedVariable[] floatArray = temp_PlayMakerFSM.FsmVariables.GetNamedVariables(VariableType.Float);
                //Debug.Log("floatArray长度:" + floatArray.Length);
                foreach (var variable in floatArray)
                {
                    //判断变量是否是 inspector 的,是的话再判断是什么类型的,存入相应的字典里
                    if (variable.ShowInInspector == true)
                    {
                        //得到变量的要存到字典的Value (variable.RawValue 也可以拿到变量值,不过应该是FsmFloat类型的)  
float variableValue = float.Parse(variable.ToString());//拿到变量的值(它是FsmFloat类型的,要先转换为string,再转为float)
                        //Vector3也是一样的,它是FsmVector3类型的,先转为string再转为Vector3(vector3与string转换方法,http://www.cnblogs.com/Peng18233754457/p/8653663.html)
//Quaternion也是一样的,网上有string与Quaternion的转换方法,http://www.cnblogs.com/Peng18233754457/p/8763137.html
//((FsmFloat)variable).Value = 1.23;//改变变量的值
//得到变量的要存到字典的Key (变量的名称) string variableKey = variable.Name;//拿到变量的名称 //字典里不包含这个键,就直接加进去 if (!float_TempDic.ContainsKey(variableKey)) { float_TempDic.Add(variableKey, variableValue); } //字典里包含这个键,就改掉这个键对应的值 else { float_TempDic[variableKey] = variableValue; } //当这个字典里有东西的时候 if (float_TempDic.Keys.Count != 0) { //加到外层字典 if (!describePath.comp_FloatVar_Val.ContainsKey(compKey)) { //describePath.comp_FloatVar_Val.Add(compKey, float_TempDic); describePath.comp_FloatVar_Val.Add(compKey, JsonUtility.ToJson(new Serialization<string, float>(float_TempDic))); } else { describePath.comp_FloatVar_Val[compKey] = JsonUtility.ToJson(new Serialization<string, float>(float_TempDic)); } float_TempDic.Clear(); } } }

 

以上是关于PlayMaker 对 PlayMakerFSM 里变量的操作的主要内容,如果未能解决你的问题,请参考以下文章

PlayMaker Debug Int/Float/Vector3...

使用Playmaker插件,导出游戏时,游戏物件上还出现文字,是怎么回事

PlayMaker 不支持过渡条件

playmaker里value是啥

unity 3d playmaker 的state1 怎么隐藏

低代码逻辑编排观:PlayMaker