Unity UGUI的RawImage(原始图片)组件的介绍及使用

1. 什么是RawImage组件?

RawImage是Unity UGUI中的一个组件,用于显示原始图片。与Image组件不同,RawImage可以直接显示原始图片的像素数据,而不需要经过额外的处理。

2. RawImage组件的工作原理

RawImage组件通过将原始图片的像素数据直接传递给显卡进行渲染,从而实现显示原始图片的功能。它可以显示各种格式的图片,包括常见的PNG、JPG等格式。

3. RawImage组件的常用属性

  • Texture:用于指定要显示的原始图片的纹理。
  • Color:用于指定图片的颜色,可以通过调整透明度来实现图片的淡入淡出效果。
  • Material:用于指定图片的材质,可以通过更换材质来实现不同的渲染效果。
  • UV Rect:用于指定图片在纹理中的位置和大小。

4. RawImage组件的常用函数

  • SetNativeSize():根据原始图片的大小自动调整RawImage的大小,使其与图片保持一致。
  • SetMaterialDirty():标记材质为脏,使其在下一帧重新渲染。
  • SetVerticesDirty():标记顶点为脏,使其在下一帧重新计算顶点位置。

5. 示例代码

示例1:显示一张图片

using UnityEngine;
using UnityEngine.UI; public class Example : MonoBehaviour
{
public RawImage rawImage;
public Texture texture; void Start()
{
rawImage.texture = texture;
}
}

操作步骤:

  1. 创建一个空物体,并将RawImage组件添加到该物体上。
  2. 将要显示的图片拖拽到RawImage组件的Texture属性上。
  3. 将上述示例代码添加到一个脚本中,并将该脚本挂载到空物体上。
  4. 运行游戏,可以看到图片被显示在RawImage组件中。

注意事项:

  • 确保要显示的图片已经导入到Unity项目中。

示例2:调整图片的颜色

using UnityEngine;
using UnityEngine.UI; public class Example : MonoBehaviour
{
public RawImage rawImage;
public Texture texture;
public Color color; void Start()
{
rawImage.texture = texture;
rawImage.color = color;
}
}

操作步骤:

  1. 创建一个空物体,并将RawImage组件添加到该物体上。
  2. 将要显示的图片拖拽到RawImage组件的Texture属性上。
  3. 将上述示例代码添加到一个脚本中,并将该脚本挂载到空物体上。
  4. 在Inspector面板中,调整RawImage组件的Color属性,改变图片的颜色。
  5. 运行游戏,可以看到图片的颜色被改变。

注意事项:

  • Color属性的透明度可以通过调整Alpha值来实现淡入淡出效果。

示例3:调整图片的大小

using UnityEngine;
using UnityEngine.UI; public class Example : MonoBehaviour
{
public RawImage rawImage;
public Texture texture; void Start()
{
rawImage.texture = texture;
rawImage.SetNativeSize();
}
}

操作步骤:

  1. 创建一个空物体,并将RawImage组件添加到该物体上。
  2. 将要显示的图片拖拽到RawImage组件的Texture属性上。
  3. 将上述示例代码添加到一个脚本中,并将该脚本挂载到空物体上。
  4. 运行游戏,可以看到RawImage的大小自动调整为与图片一致。

注意事项:

  • 在调用SetNativeSize()函数之前,确保RawImage的Texture属性已经被赋值。

示例4:更换图片

using UnityEngine;
using UnityEngine.UI; public class Example : MonoBehaviour
{
public RawImage rawImage;
public Texture texture1;
public Texture texture2; void Start()
{
rawImage.texture = texture1;
} public void ChangeTexture()
{
rawImage.texture = texture2;
}
}

操作步骤:

  1. 创建一个空物体,并将RawImage组件添加到该物体上。
  2. 将要显示的图片1和图片2拖拽到RawImage组件的Texture属性上。
  3. 创建一个按钮,并将上述示例代码添加到一个脚本中,并将该脚本挂载到按钮上。
  4. 将按钮的OnClick事件关联到ChangeTexture()函数。
  5. 运行游戏,点击按钮,可以看到图片被更换为图片2。

注意事项:

  • 确保按钮的OnClick事件已经正确关联到ChangeTexture()函数。

示例5:更换材质

using UnityEngine;
using UnityEngine.UI; public class Example : MonoBehaviour
{
public RawImage rawImage;
public Texture texture;
public Material material; void Start()
{
rawImage.texture = texture;
rawImage.material = material;
}
}

操作步骤:

  1. 创建一个空物体,并将RawImage组件添加到该物体上。
  2. 将要显示的图片拖拽到RawImage组件的Texture属性上。
  3. 将要使用的材质拖拽到RawImage组件的Material属性上。
  4. 将上述示例代码添加到一个脚本中,并将该脚本挂载到空物体上。
  5. 运行游戏,可以看到图片的渲染效果被更换为材质所定义的效果。

注意事项:

  • 确保要使用的材质已经导入到Unity项目中。

参考资料

Unity UGUI的RawImage(原始图片)组件的介绍及使用的更多相关文章

  1. Unity UGUI实现鼠标拖动图片

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  2. Unity UGUI暂停按钮切换图片代码

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  3. Unity UGUI Layout自动排版组件用法介绍

    Unity UGUI布局组件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  4. Unity UGUI

    超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/detai ...

  5. Unity UGUI图文混排源码(三) -- 动态表情

    这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn. ...

  6. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  7. Unity UGUI实现图文混排

    目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响.然后对于中文来说就是一个相当麻烦的事了,毕竟图文混排多用于游戏 ...

  8. Unity UGUI事件接口概述

    UGUI 系统虽然提供了很多封装好的组件,但是要实现一些特定的功能还是显得非常有限,这时候就需要使用事件接口来完成UI功能的实现.比如我们想实现鼠标移动到图片上时自动显示图片的文字介绍,一般思路会想到 ...

  9. Unity UGUI —— 无限循环List

    还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是 ...

  10. 基于Unity·UGUI实现的RecycleList循环列表UI容器

    在UI功能开发实践中,列表UI容器是我们经常使用一种UI容器组件.这种组件就根据输入的数据集合生成对应数据项目.从显示的方向来说,一般就分为水平排布和垂直排布的列表容器两种.列表容器为了在有限的界面空 ...

随机推荐

  1. MySQL-(InnoDB)事务和锁

    在事务并行处理背景下,不同的事务之间因数据共享的状态变化,存在着某种依赖/隔离影响.即事务隔离级别. 事务隔离级别,官网的解释在这里. InnoDB提供 SQL:1992 标准描述的所有四种事务隔离级 ...

  2. JS 打开本地应用软件

    我们有遇到可以直接打开QQ的跳转链接,也有遇到过直接启动office打开文档. 具体是如何操作的呢? 添加注册表项 首先需要在注册表中添加应用软件的启动地址,操作方式如下 在HKEY_CLASSES_ ...

  3. 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置

    目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208 ...

  4. 2022-02-19:安装栅栏。 在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。

    2022-02-19:安装栅栏. 在一个二维的花园中,有一些用 (x, y) 坐标表示的树.由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树.只有当所有的树都被绳子包围时,花园才能围好栅栏. ...

  5. ToolStrip1

    Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles Too ...

  6. 【Java】水果超市管理系统

    前言 说是个系统,看着像实训的产物,但实际上这是Java课程最后一个关于jdbc的大实验,yes,挺大的. 过程 看着视频里的一堆一堆的文件,逻辑混乱的讲解,我决定 我自己写这个系统 说干就干: 分析 ...

  7. npm run serve/build 背后的真实操作

    vue CLI 用起来的确很舒服,方便省事,但他经过层层封装很难明白,执行完那个npm run serve/build 后他都干了些什么,甚至不知道整个项目是怎么跑起来的,今天自己抽时间就去瞅瞅,为加 ...

  8. ArcMap手动新建矢量要素的方式

      本文介绍在ArcGIS下属ArcMap软件中,新建点.线.面等矢量要素图层,并对新建图层的空间范围加以划定的方法.   首先,在右侧"Catalog"栏中选择需要存放新建立矢量 ...

  9. GroundingDINO(一种开集目标检测算法)服务化,根据文本生成检测框

    背景 最近发现一个叫GroundingDINO的开集目标检测算法,所谓开集目标检测就是能检测的目标类别不局限于训练的类别,这个算法可以通过输入文本的prompt然后输出对应的目标框.可以用来做预标注或 ...

  10. defcon-quals 2023 crackme.tscript.dso wp

    队友找到的引擎TorqueGameEngines/Torque3D (github.com) 将dso文件放到data/ExampleModule目录下,编辑ExampleModule.tscript ...