| using UnityEngine; | 
| using UnityEditor; | 
| using System.Collections; | 
| using UnityEngine.UI; | 
|   | 
| public class GameObjectMenuExtension | 
| { | 
|   | 
|     [MenuItem("GameObject/UI/ImageToImageEx &5")] | 
|     static void CreateTextEx() | 
|     { | 
|   | 
|        for (var i=0;i<Selection.gameObjects.Length;i++) | 
|        { | 
|             var gameObject = Selection.gameObjects[i]; | 
|             var image = gameObject.GetComponent<Image>(); | 
|   | 
|             if (image != null) | 
|             { | 
|                 var sprite = image.overrideSprite; | 
|                 var color = image.color; | 
|                 var material = image.material; | 
|                 var raycast = image.raycastTarget; | 
|                 var imageType = image.type; | 
|                 var fillOrigin = image.fillOrigin; | 
|                 var fillClockWise = image.fillClockwise; | 
|                 var fillMethod = image.fillMethod; | 
|                 var fillCenter = image.fillCenter; | 
|                 var preserveAspect = image.preserveAspect; | 
|                 var fillAmount = image.fillAmount; | 
|   | 
|   | 
|                 Component.DestroyImmediate(image); | 
|   | 
|                 var imageEx = gameObject.AddMissingComponent<ImageEx>(); | 
|                 imageEx.sprite = sprite; | 
|                 imageEx.color = color; | 
|                 imageEx.material = material; | 
|                 imageEx.raycastTarget = raycast; | 
|                 imageEx.type = imageType; | 
|   | 
|                 imageEx.fillOrigin = fillOrigin; | 
|                 imageEx.fillClockwise = fillClockWise; | 
|                 imageEx.fillMethod = fillMethod; | 
|                 imageEx.fillCenter = fillCenter; | 
|                 imageEx.preserveAspect = preserveAspect; | 
|                 imageEx.fillAmount = fillAmount; | 
|             } | 
|         } | 
|     } | 
|   | 
|     [InitializeOnLoadMethod] | 
|     static void StartInitializeOnLoadMethod() | 
|     { | 
|         //EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI; | 
|     } | 
|   | 
|     static void OnHierarchyGUI(int instanceID, Rect selectionRect) | 
|     { | 
|         if (Event.current != null && selectionRect.Contains(Event.current.mousePosition) | 
|             && Event.current.button == 1 && Event.current.type <= EventType.MouseUp) | 
|         { | 
|             var selectedGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject; | 
|             if (selectedGameObject) | 
|             { | 
|                 if (selectedGameObject.GetComponent<Image>()) | 
|                 { | 
|                     //Vector2 mousePosition = Event.current.mousePosition; | 
|                     //EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "GameObject/UICustom", null); | 
|                     //Event.current.Use(); | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
| } |