AddComponentRecursively

class AddComponentRecursively extends ScriptableWizard {

 

    var componentName : String = "";

 

    @MenuItem ("GameObject/Add Component Recursively...")

 

    static function AddComponentsRecursivelyItem() {

        ScriptableWizard.DisplayWizard("Add Component Recursively", AddComponentRecursively, "Add", "");

    }

 

    //Main function

    function OnWizardCreate() {

        var total : int = 0;

        for (var currentTransform : Transform in Selection.transforms) { 

          total += RecurseAndAdd(currentTransform, componentName);

        }

        if (total == 0)

            Debug.Log("No components added.");

        else

            Debug.Log(total + " components of type \"" + componentName + "\" created.");

    }

 

    function RecurseAndAdd(parent : Transform, componentToAdd : String) : int {

        //keep count

        var total : int = 0;

        //add components to children

        for (var child : Transform in parent) {

            total += RecurseAndAdd(child, componentToAdd);

        }

        //add component to parent

        var existingComponent : Component = parent.GetComponent(componentToAdd);

        if (!existingComponent) {

            parent.gameObject.AddComponent(componentToAdd);

            total++;

        }

 

        return total;

    }

    //Set the help string

    function OnWizardUpdate () {  

        helpString = "Specify the exact name of the component you wish to add:";

    }

 

    // The menu item will be disabled if no transform is selected. 

    @MenuItem ("GameObject/Add Component Recursively...", true) 

 

    static function ValidateMenuItem() : boolean { 

       return Selection.activeTransform; 

    }

}

 

你可能感兴趣的:(component)