一、贴图的Texture Type属性类型

Texture:会把贴图的大小转换为最相近的2的n次方,比如400X1369会转换为512X1024。

Sprite 2D:是贴图的原始大小。

二、RawImage的UI节点

1.创建一个RawImage类型的UI节点,贴图属性是Texture,与Image是不一样的,Image是Sprite2D类型的。

2.RawImage比Image多一个Raw Image组件,里面的UV rect属性是比较特殊的。

3.UV rect的x,y的意思就是从贴图的哪个地方开始显示在Canvas中的。以左下角为(0,0),右上角为(1,1)。

如果是x,y是(0,0.5),表示从贴图的中部(0,0.5)的坐标开始往上和往右显示,超出的部分有两种模式来填补,受贴图的Wrap Mode属性影响,Clamp表示用最后的像素填充,另一种是Repeat表示从头开始贴,Sprite类型的只能Clamp。

4.UV rect的w,h的意思就是显示在Canvas中的大小,以左下角为(0,0),右上角为(1,1),如果是w,h是(0.5,0.5),表示在Canvas中显示原来贴图的四分之一。

三、Image和RawImage区别和优势

区别:

1.Sprite 只能用在 Image 组件上,做2D and UI;
2.Sprite可以做九宫格;
3.Sprite一般用在小图.可以打Atlas(图集);
4.Texture基于纹理寻址模式,不能打包Atlas;
5. UI 需要修改UV rect和用到寻址模式的,用Texture,否则用Sprite;

优势:

1.Image有Image的优势,Image可以九宫格拉伸。

2.RawImage有RawImage的优势,RawImage可以UV rect贴图的纹理寻址。

3.一般用Image,除了地图寻址,滚动之类的,从贴图哪个位置开始显示。

四、RawImage应用--飞行类游戏场景的滚动效果

1.创建一个叫做sky的RawImage的UI节点。

2.把Texture类型的贴纸拖进sky节点的RawImage组件的Teture属性中。贴图必须是Texture类型的,不能是Sprite2D,Sprite2D会有空白。而且Wrap Mode必须是Repeat,不然会把最后一行的像素重复显示。

2.设置sky节点的Scale,x和y都设置为1.25,覆盖好Canvas。只有x,y相同才能不变形。

3.创建一个叫sky的脚本,挂载到sky节点下。

4.sky脚本代码

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class sky : MonoBehaviour {
RawImage img;
float speed = 0.1f;
// Use this for initialization
void Start () {
this.img = this.GetComponent<RawImage>();
} // Update is called once per frame
void Update () {
float s = this.speed * Time.deltaTime;
Rect r = this.img.uvRect;
r.y += s;
this.img.uvRect = r;
}
}

5.可以实现地图的滚动

五、创建完一个Canvas后需要做的事情

1.把Canvas节点的Canvas组件的Render Mode改为Screen Space-Overlay

2.把Canvas节点的Canvas Scaler组件的UI Scale Mode改为Scale With Screen Size

3.把Canvas节点的Canvas Scaler组件的Reference Resolution改为640X960

4.把Canvas节点的Canvas Scaler组件的Match拉到Width那一边

5.把Canvas节点的Canvas Scaler组件的Reference Pixels Per改为100

注意:Canvas节点的Canvas组件的Render Mode为Screen Space-Overlay时是绘制不出带材质球的UI节点,必须换成Screen Space-Camera,并且把Main Camera拉到Canvas节点的Canvas组件的Render Camera属性中才会显示。

关于Unity中UI中的RawImage节点以及制作地图滚动效果的更多相关文章

  1. 关于Unity中UI中的Mask组件、Text组件和布局

    一.Mask组件 遮罩,Rect Mask矩形Mask(Rect Mask2D组件),图片Mask(Mask组件)(图片Mask的透明度不为0的部分显示子图片,为0的部分不显示子图片) Rect Ma ...

  2. 关于Unity中UI中的Image节点以及它的Image组件

    一.图片的Inspector面板属性 Texture Type:一般是选择sprite(2D and UI) Sprite Mode:一般是选择Single Packing Tag:打包的标志值,最后 ...

  3. 关于Unity中UI中的Slider,Toggle和InputField等节点

    一.Slider节点 1.创建一个Canvas 2.对Canvas进行一些初始化操作 3.创建一个Image的UI节点在Canvas下面作为子节点 4.把Image铺满整个Canvas,把宽高设置为6 ...

  4. 关于Unity中UI中的Button节点以及它的Button组件

    Button是最常用的UI节点,包含的组件有 1.Image组件 显示Button的纹理,把Image贴图拖进Image组件中后,记得点击Set Native Size,显示贴图原始大小 2.Butt ...

  5. 关于 Unity UI 中 GraphicRaycaster.Raycast 数量巨大的问题

    有时候会发现 Unity UI 非常耗时,在 Profiler 中可以轻易的看到 UI 中 的 GraphicRaycaster.Raycast 单帧调用可以成百上千,甚至好几千,帧速率前不忍赌,一关 ...

  6. 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false

    关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...

  7. unity ui中使用onmouseover

    unity ui中鼠标移进或者移出的触发方式与2d.3d的不同,2d.3d物体使用的是onmouseover,ui使用的是OnPointerEnter.需要实现以下两个接口. public class ...

  8. COCOS2D-X中UI动画导致闪退与UI动画浅析

    前两天和同事一起查一个游戏的闪退问题,log日志显示最后挂在CCNode* ActionNode::getActionNode()函数中的首行CCNode* cNode = dynamic_cast& ...

  9. Unity项目开发过程中常见的问题,你遇到过吗?

    最近看到有朋友问一个unity游戏开发团队,需要掌握哪些知识之类的问题.事实上Unity引擎是一个很灵活的引擎,根据团队开发游戏类型的不同,对人员的要求也有差异,所以不能一概而论.但是,一些在Unit ...

随机推荐

  1. AME_PR采购申请单通过AME审批设定和测试(案例)

    2014-06-21 Created By BaoXinjian

  2. POSIX 消息队列 和 系列函数

    一.在前面介绍了system v 消息队列的相关知识,现在来稍微看看posix 消息队列. posix消息队列的一个可能实现如下图: 其实消息队列就是一个可以让进程间交换数据的场所,而两个标准的消息队 ...

  3. linux page buffer cache深入理解

    Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = ...

  4. 配置新服务器 的一些 依赖库 php mysql nginx

    利用CentOS Linux系统自带的yum命令安装.升级所需的程序库 LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel ...

  5. php分页函数示例代码

    分享一例php分页函数代码,用此函数实现分页代码很不错. 代码,php分页函数. <?php /* * Created on 2011-07-28 * Author : LKK , http:/ ...

  6. 【Android】3.15 短串分享功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 短串分享是指,用户搜索查询后得到的每一个地理位置结果将会对应一条短串(短链接),用户可以通过短信.邮 ...

  7. Java8 新特性简介

    Java8是2014年发布的,至今也已经有快三年的时间了,之前虽然有学习过,但是学的比较零散,不成系统,而且也没有覆盖到Java8所有的特性. 由于公司已经使用了JDK1.8,所以工作中能使用Java ...

  8. 将socket通信变成并发的方式

    一 利用multiprocessing模块,开启多进程,实现socket通信并发 1. 开启子进程的两种方式 import time import random from multiprocessin ...

  9. SparkStreaming操作Kafka

    Kafka为一个分布式的消息队列,spark流操作kafka有两种方式: 一种是利用接收器(receiver)和kafaka的高层API实现. 一种是不利用接收器,直接用kafka底层的API来实现( ...

  10. GetLastError()返回值大全

    [0]-操作成功完成.[1]-功能错误.[2]-系统找不到指定的文件.[3]-系统找不到指定的路径.[4]-系统无法打开文件.[5]-拒绝访问.[6]-句柄无效.[7]-存储控制块被损坏.[8]-存储 ...