Unity 编辑器开发实战【MenuItem CONTEXT】- Image、RawImage的相互转换
1.Image转RawImage:

代码如下:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;namespace SK.Framework
{public class ImageTool : Editor{/// /// Image转RawImage/// [MenuItem("CONTEXT/Image/Convert 2 RawImage")]public static void Image2RawImage(){Image image = Selection.activeGameObject.GetComponent();//Image中Sprite不为空则获取其textureTexture2D texture2D = image.sprite ? image.sprite.texture : null;var raycastTarget = image.raycastTarget;//销毁Image组件DestroyImmediate(image);//添加RawImage组件RawImage rawImage = Selection.activeGameObject.AddComponent();rawImage.texture = texture2D;rawImage.raycastTarget = raycastTarget;//SetDirty以保存EditorUtility.SetDirty(Selection.activeGameObject);}}
}
2.RawImage转Image:

代码如下:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;namespace SK.Framework
{public class ImageTool : Editor{/// /// RawImage转Image/// [MenuItem("CONTEXT/RawImage/Convert 2 Image")]public static void RawImage2Image(){RawImage rawImage = Selection.activeGameObject.GetComponent();Sprite sprite = null;//如果RawImage组件中的texture不为空if (rawImage.texture != null){//获取texture的资源路径var path = AssetDatabase.GetAssetPath(rawImage.texture);//根据该资源路径加载Spritesprite = AssetDatabase.LoadAssetAtPath(path);}var raycastTarget = rawImage.raycastTarget;//销毁RawImage组件DestroyImmediate(rawImage);//添加Image组件Image image = Selection.activeGameObject.AddComponent();image.sprite = sprite;image.raycastTarget = raycastTarget;//SetDirty以保存EditorUtility.SetDirty(Selection.activeGameObject);}}
}
完整脚本:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;namespace SK.Framework
{public class ImageTool : Editor{/// /// Image转RawImage/// [MenuItem("CONTEXT/Image/Convert 2 RawImage")]public static void Image2RawImage(){Image image = Selection.activeGameObject.GetComponent();//Image中Sprite不为空则获取其textureTexture2D texture2D = image.sprite ? image.sprite.texture : null;var raycastTarget = image.raycastTarget;//销毁Image组件DestroyImmediate(image);//添加RawImage组件RawImage rawImage = Selection.activeGameObject.AddComponent();rawImage.texture = texture2D;rawImage.raycastTarget = raycastTarget;//SetDirty以保存EditorUtility.SetDirty(Selection.activeGameObject);}/// /// RawImage转Image/// [MenuItem("CONTEXT/RawImage/Convert 2 Image")]public static void RawImage2Image(){RawImage rawImage = Selection.activeGameObject.GetComponent();Sprite sprite = null;//如果RawImage组件中的texture不为空if (rawImage.texture != null){//获取texture的资源路径var path = AssetDatabase.GetAssetPath(rawImage.texture);//根据该资源路径加载Spritesprite = AssetDatabase.LoadAssetAtPath(path);}var raycastTarget = rawImage.raycastTarget;//销毁RawImage组件DestroyImmediate(rawImage);//添加Image组件Image image = Selection.activeGameObject.AddComponent();image.sprite = sprite;image.raycastTarget = raycastTarget;//SetDirty以保存EditorUtility.SetDirty(Selection.activeGameObject);}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
