zoukankan      html  css  js  c++  java
  • 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(); } } }
  • 相关阅读:
    010-spring事务管理
    009-事务管理
    008-ThreadLocal
    Bmob用户管理操作
    Textview下划线注册用户跳转实现
    Android中多个调用Activity的问题
    解决android:theme="@android:style/Theme.NoDisplay" 加入这句话后程序不能运行
    友盟自动更新
    友盟消息推送和更新XML配置
    Android 云服务器的搭建和友盟APP自动更新功能的实现
  • 原文地址:https://www.cnblogs.com/Peng18233754457/p/8763127.html
Copyright © 2011-2022 走看看