//初始化属性
    protected void initAttribute()
    {
        try
        {
            m_strategyName  = serializedObject.FindProperty("dataTransmitStrategyName");
            m_parameter     = serializedObject.FindProperty("dataTransmitStrategyParameter");
            m_observedState = serializedObject.FindProperty("observedState_backup");
            m_clusterView   = serializedObject.FindProperty("_viewInstance");

            parameter    = m_parameter.stringValue;
            strategyName = m_strategyName.stringValue;
            states       = new System.Collections.Specialized.BitVector32(m_observedState.intValue);
            dtsEnum      = name2DtsEnum(strategyName);
        }
        catch (System.NullReferenceException)
        {
            //Debug.LogWarning(e.Message);
        }
    }
 //根据数据传输策略类的枚举变量获取数据传输策略类的类名
 protected string dtsEnum2Name(EditorDTSEnum dtsEnum)
 {
     return(FduGlobalConfig.editorDTSEnum2nameMap[dtsEnum]);
 }
    //绘制数据传输策略类功能面板
    protected void DrawDataTransmitStrategyField()
    {
        if (!Application.isPlaying)
        {
            dtsEnum = (EditorDTSEnum)EditorGUILayout.EnumPopup("Data Transmit Strategy", dtsEnum);

            EditorGUILayout.BeginHorizontal();
            if (dtsEnum == EditorDTSEnum.CustomStrategy)
            {
                strategyName = EditorGUILayout.TextField("Strategy Name", strategyName);
            }
            else
            {
                strategyName = dtsEnum2Name(dtsEnum);
            }

            if (dtsEnum == EditorDTSEnum.EveryNFrame)
            {
                int       interval = 2;
                string [] paras;
                FduDTS_EveryNFrame.InterpolationOption interOp = FduDTS_EveryNFrame.InterpolationOption.Disable;
                FduDTS_EveryNFrame.ExtrapolationOption extraOp = FduDTS_EveryNFrame.ExtrapolationOption.Disable;
                int cachedPropertyCount = 1;
                int lerpSpeed           = 1;
                try
                {
                    paras               = parameter.Split('&');
                    interval            = int.Parse(paras[0]);
                    interOp             = (FduDTS_EveryNFrame.InterpolationOption) int.Parse(paras[1]);
                    extraOp             = (FduDTS_EveryNFrame.ExtrapolationOption) int.Parse(paras[2]);
                    cachedPropertyCount = int.Parse(paras[3]);
                    lerpSpeed           = int.Parse(paras[4]);
                }
                catch (System.Exception)
                {
                    interval = 2;
                }
                EditorGUILayout.EndHorizontal();


                interval            = EditorGUILayout.IntSlider("Frame Interval", interval, 2, FduGlobalConfig.EVERY_N_FRAME_MAX_FRAME);
                interOp             = (FduDTS_EveryNFrame.InterpolationOption)EditorGUILayout.EnumPopup("Interpolation Option", interOp);
                extraOp             = (FduDTS_EveryNFrame.ExtrapolationOption)EditorGUILayout.EnumPopup("Extrapolation Option", extraOp);
                cachedPropertyCount = EditorGUILayout.IntSlider("Cached Property Max Count", cachedPropertyCount, 1, 10);
                if (interOp == FduDTS_EveryNFrame.InterpolationOption.Lerp)
                {
                    lerpSpeed = EditorGUILayout.IntSlider("Lerp Speed", lerpSpeed, 1, 60);
                }
                parameter = interval + "&" + (int)interOp + "&" + (int)extraOp + "&" + cachedPropertyCount + "&" + lerpSpeed;
                EditorGUILayout.BeginHorizontal();
            }
            else
            {
                if (dtsEnum == EditorDTSEnum.OnClusterCommand)
                {
                    parameter = EditorGUILayout.TextField("Command Name", parameter);
                }
                else if (dtsEnum == EditorDTSEnum.CustomStrategy)
                {
                    parameter = EditorGUILayout.TextField("Custom string Parameter", parameter);
                }
                states[FduGlobalConfig.BIT_MASK[31]] = false;
            }

            EditorGUILayout.EndHorizontal();
        }
        else
        {
            FduObserverBase m_target = (FduObserverBase)target;
            if (m_target.getDataTransmitStrategy() != null)
            {
                EditorGUILayout.LabelField("Strategy Class Name", m_target.getDataTransmitStrategy().GetType().FullName);
            }
            else
            {
                EditorGUILayout.LabelField("Data-transmit-strategy class instance is null");
            }
        }
    }