Unity代码分享Editor编辑器扩展Image和RawImage的相互转化

public class MenuUtils
{
    [MenuItem("CONTEXT/RawImage/2 Image Slice(Dis Raycast)")]
    static void ChangeRaw2ImageDisRaycast(MenuCommand  cmd)
    {
        var img = ChangeRaw2Image(cmd);
        img.raycastTarget = false;
    }
    [MenuItem("CONTEXT/RawImage/2 Image Slice")]
    static Image ChangeRaw2Image(MenuCommand  cmd)
    {
        var rawImage = cmd.context as RawImage;
        var path = AssetDatabase.GetAssetPath(rawImage.mainTexture);
        
        var go = rawImage.gameObject;
        Object.DestroyImmediate(rawImage);
                
        var img = go.AddComponent();
        img.type = Image.Type.Sliced;
        img.sprite = AssetDatabase.LoadAssetAtPath(path);

        string optmizeMatPath = AssetDatabase.GUIDToAssetPath("");
        if (optmizeMatPath != "")
        {
            var mat = AssetDatabase.LoadAssetAtPath(optmizeMatPath);
            if (mat != null)
                img.material = mat;
        }

        EditorUtility.SetDirty(go);
        return img;
    }
}

你可能感兴趣的:(程序员瞎折腾,每天一点u3d)