public override void OnInspectorGUI() { BFColliderCollection collection = target as BFColliderCollection; //选hit类型 string[] typeNames = System.Enum.GetNames(typeof(BFColliderCollectionType)); collection.type = (BFColliderCollectionType)EditorGUILayout.Popup("TypeName", (int)collection.type, typeNames); //选动作名 BFSprite actor = BFTools.FindComponentInParent <BFSprite>(collection.transform); if (actor != null) { string[] animationNames = actor.GetAnimationNames(); int index = BFTools.FindIndexInArray(animationNames, collection.actionName); int selectedIndex = EditorGUILayout.Popup("ActionName", index, animationNames); collection.actionName = animationNames[selectedIndex]; } else { Debug.LogError("BFColliderCollection must be the child of BFSprite component!"); } //显示包含的碰撞器 NGUIEditorTools.BeginContents(); if (NGUIEditorTools.DrawHeader("Colliders")) { BFCollider[] childColliders = collection.GetComponentsInChildren <BFCollider>(true); if (childColliders.Length > 0) { BFTools.SortTransformByName(childColliders); collection.colliders = childColliders; for (int i = 0; i < childColliders.Length; i++) { EditorGUILayout.ObjectField("collider" + i, childColliders[i], typeof(BFCollider), true); } } else { EditorGUILayout.LabelField("No BFCollider in children!"); } } //GUILayout.Toggle(true, "Colliders", "dragtab", GUILayout.MinWidth(20f)); NGUIEditorTools.EndContents(); Debug.Log("Editor Code : " + this.GetHashCode()); }
public override void OnInspectorGUI() { BFColliderSprite sprite = target as BFColliderSprite; sprite.animator = (Animator)EditorGUILayout.ObjectField("Animator", sprite.animator, typeof(Animator), true); string[] actionNames = sprite.GetAnimationNames(); //collider 集合 NGUIEditorTools.BeginContents(); if (NGUIEditorTools.DrawHeader("Collider Actions")) { if (actionNames.Length > 0) { //找这个节点下所有的collider组件 List <BFColliderCollection> childCollections = BFTools.GetComponentInChildren <BFColliderCollection>(sprite.transform); for (int i = 0; i < actionNames.Length; i++) { string key = actionNames[i]; BFColliderCollection collection = null; for (int j = 0; j < childCollections.Count; j++) { if (key.Equals(childCollections[j].actionName) && childCollections[j].type == BFColliderCollectionType.ColliderBox) { collection = childCollections[j]; break; } } sprite.colliderMap.Set(key, (BFColliderCollection)EditorGUILayout.ObjectField(key, collection, typeof(BFColliderCollection), true)); } } else { EditorGUILayout.LabelField("No actions in the component!"); } } NGUIEditorTools.EndContents(); }