//初始化属性 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"); } } }