Raw Image和旧版Texture的区别
时间: 2024-06-06 20:06:49 浏览: 182
Raw Image和旧版Texture的区别如下:
1. 渲染方式不同:Raw Image是基于Unity的UI系统渲染的,而旧版Texture是基于游戏场景的渲染方式。
2. 素材处理方式不同:Raw Image支持多种素材处理方式,如TGA、PNG、JPEG等,而旧版Texture只支持TGA格式。
3. 功能不同:Raw Image提供了更多的自定义选项和特效,如alpha混合模式、图片填充模式、颜色混合模式等,而旧版Texture的功能相对较为简单。
4. 使用场景不同:Raw Image主要用于UI界面的设计,而旧版Texture则主要用于游戏场景的贴图和材质制作。
相关问题
unity rawImage 赋值texture 在点击rawImage之后如何清空texture
可以通过在点击 `RawImage` 后,将其 `texture` 属性设置为 `null` 来清空 `texture`。
以下是一个示例代码:
```csharp
using UnityEngine;
using UnityEngine.UI;
public class ClearTextureOnRawImageClick : MonoBehaviour
{
public RawImage rawImage;
private void Start()
{
// 在 Start 方法中为 RawImage 赋值 texture
rawImage.texture = /* 赋值的 texture */;
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 在鼠标左键点击 RawImage 后清空其 texture
if (RectTransformUtility.RectangleContainsScreenPoint(rawImage.rectTransform, Input.mousePosition))
{
rawImage.texture = null;
}
}
}
}
```
在上述示例代码中,我们在 `Start` 方法中为 `RawImage` 赋值了一张 `texture`。然后在 `Update` 方法中,通过判断鼠标左键是否点击在 `RawImage` 区域内,来清空其 `texture`。
我从RawImage.texture中利用Texture2D截取了一张图片,但是我现在想要根据矩形在这张图片的正中间,截取一张100*100的图片
可以按照以下步骤来实现:
1. 获取RawImage的Texture2D。
```csharp
Texture2D sourceTexture = (Texture2D)rawImage.texture;
```
2. 计算矩形左下角在原始图片中的像素坐标。
```csharp
int x = sourceTexture.width / 2 - 50;
int y = sourceTexture.height / 2 - 50;
```
这里假设要截取的图片在原始图片中居中,所以左下角的像素坐标为原始图片宽度和高度的一半减去50(截取图片大小的一半)。
3. 截取指定大小的部分。
```csharp
int width = 100;
int height = 100;
Color[] pixels = sourceTexture.GetPixels(x, y, width, height);
Texture2D newTexture = new Texture2D(width, height);
newTexture.SetPixels(pixels);
newTexture.Apply();
```
这里利用Texture2D的GetPixels方法获取指定区域的像素信息,然后创建新的Texture2D并将像素信息设置到新的Texture2D中。
最终的代码如下:
```csharp
// 获取RawImage的Texture2D
Texture2D sourceTexture = (Texture2D)rawImage.texture;
// 计算矩形左下角在原始图片中的像素坐标
int x = sourceTexture.width / 2 - 50;
int y = sourceTexture.height / 2 - 50;
// 截取指定大小的部分
int width = 100;
int height = 100;
Color[] pixels = sourceTexture.GetPixels(x, y, width, height);
Texture2D newTexture = new Texture2D(width, height);
newTexture.SetPixels(pixels);
newTexture.Apply();
```
注意:如果RawImage的Texture2D是从网络或者磁盘中加载的,需要等待加载完成后再进行截取操作。可以使用协程来等待加载完成后再执行截取操作。
阅读全文