码迷,mamicode.com
首页 > 其他好文 > 详细

PlayMaker 对 PlayMakerFSM 里变量的操作

时间:2018-04-09 23:09:09      阅读:804      评论:0      收藏:0      [点我收藏+]

标签:color   命名空间   inspector   util   直接   需要   红色   名称   .com   

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 
                        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 里变量的操作

标签:color   命名空间   inspector   util   直接   需要   红色   名称   .com   

原文地址:https://www.cnblogs.com/Peng18233754457/p/8763127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!