コード例 #1
0
    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());
    }
コード例 #2
0
    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();
    }