protected override void OnInspectorGUI() { base.OnInspectorGUI(); GPActionEnableComponent action = (GPActionEnableComponent)TargetAction; if (m_componentList == null || m_components == null) { CreateComponentList(); } bool prevThisObject = action._thisObject; action._thisObject = EditorGUILayout.ToggleLeft("This Object", action._thisObject); if (prevThisObject != action._thisObject) { if (action._thisObject && action._component != null) { action._component = null; m_componentParentObject = action.ParentGameObject; } CreateComponentList(); } if (action._thisObject) { m_componentParentObject = action.ParentGameObject; } else { GameObject prevParent = m_componentParentObject; m_componentParentObject = (GameObject)EditorGUILayout.ObjectField("Parent Object", prevParent, typeof(GameObject), true); if (m_componentParentObject != prevParent) { action._component = null; CreateComponentList(); } } if (m_componentParentObject == null) { m_componentList = null; m_components = null; return; } int prevSelectedIdx = m_componentPopupIndex; m_componentPopupIndex = EditorGUILayout.Popup("Component", prevSelectedIdx, m_componentList); if (prevSelectedIdx != m_componentPopupIndex) { action._component = m_components[m_componentPopupIndex]; } }
private void CreateComponentList() { GPActionEnableComponent action = (GPActionEnableComponent)TargetAction; if (m_componentParentObject == null) { return; } m_components = m_componentParentObject.GetComponents <Component>(); m_componentList = new string[m_components.Length]; m_componentPopupIndex = 0; for (int i = 0; i < m_components.Length; i++) { if (m_components[i] == action._component) { m_componentPopupIndex = i; } m_componentList[i] = m_components[i].GetType().Name + " (" + m_components[i].GetInstanceID() + ")"; } }
public override void SetAction(GPAction action) { base.SetAction(action); GPActionEnableComponent ecAction = (GPActionEnableComponent)TargetAction; if (ecAction._component == null) { return; } m_componentParentObject = ecAction._component.gameObject; CreateComponentList(); }