由网友(呆萌的欧尼酱)分享简介:Hi我尝试在Image中转换我的纹理2D(我不能使用Raw Image,因为手机中的分辨率不匹配),但问题是Image没有纹理元素。如何在Image.Sprite中转换UnityEng.Texture2D。//Image Profileprotected Texture2D pickedImage;public T...Hi我尝试在Image中转换我的纹理2D(我不能使用Raw Image,因为手机中的分辨率不匹配),但问题是Image没有纹理元素。如何在Image.Sprite中转换UnityEng.Texture2D。
![研发实战 用Unity 3D Max V Ray等工具为Quest开发高质量图像](https://p.xsw88.cn/allimgs/daicuo/20230903/2219.png)
//Image Profile
protected Texture2D pickedImage;
public Texture2D myTexture2D;
public RawImage getRawImageProfile;
public RawImage getRawImageArrayProfile;
public Image getRawImageProfile2;
public Image getRawImageArrayProfile2;
public void PickImageFromGallery(int maxSize = 256)
{
NativeGallery.GetImageFromGallery((path) =>
{
if( path != null )
{
byte[] imageBytes = File.ReadAllBytes(path);
pickedImage = null;
pickedImage = new Texture2D(2, 2);
pickedImage.LoadImage(imageBytes);
getRawImageProfile.texture = pickedImage;
getRawImageArrayProfile.texture = pickedImage;
getRawImageProfile2.sprite = pickedImage; //ERROR CONVERT SPRITE
//getRawImageArrayProfile2.texture = pickedImage;
}
}, maxSize: maxSize);
byte[] myBytes;
myBytes = pickedImage.EncodeToPNG();
enc = Convert.ToBase64String(myBytes);
}
推荐答案
Sprite.Create
完全符合您的要求。
来自Sprite上的Unity docs。创建:
![研发实战 用Unity 3D Max V Ray等工具为Quest开发高质量图像](https://p.xsw88.cn/allimgs/daicuo/20230903/2219.png)
Sprite.Create创建可在游戏应用程序中使用的新Sprite。需要加载纹理并将其分配给Create,才能控制新Sprite的外观。
在代码中:
public Texture2D myTexture2D; // The texture you want to convert to a sprite
Sprite mySprite; // The sprite you're gonna save to
Image myImage; // The image on which the sprite is gonna be displayed
public void FooBar()
{
mySprite = Sprite.Create(myTexture2D, new Rect(0.0f, 0.0f, myTexture2D.width, myTexture2D.height), new Vector2(0.5f, 0.5f), 100.0f);
myImage.sprite = mySprite; // apply the new sprite to the image
}
在上面的示例中,我们从myTexture2D
中获取图像数据,并使用每单位100个像素创建一个与原始纹理2D相同大小的new Rect
,其轴心点在中心。然后,我们将新制作的精灵应用于图像。相关推荐
最新文章