一、贴图的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. 进程在Linux内核中的角色扮演

    在Linux内核中,内核将进程.线程和内核线程一视同仁,即内核使用唯一的数据结构task_struct来分别表示他们:内核使用相同的调度算法对这三者进行调度:并且内核也使用同一个函数do_fork() ...

  2. 实现 Sunday 算法

    鉴于校园招聘笔试题,有个字符串模式匹配的问题,99+%都是暴力,偶尔一两个写KMP,但是明显是知其表不知其里.期待的 BM算法 或者 Sunday 没有出现!鉴于网友的回复,特此声明:我的代码假定字符 ...

  3. Android-SQLiteOpenHelper

    Android-SQLiteOpenHelper 一 概念 是对SOLiteDatabase的封装.主要用于建立和版本号控制,方便我们去建立库表结构 二 用法 又一次封装一个MySqliteOpenH ...

  4. nginx是以多进程的方式来工作的

    nginx是以多进程的方式来工作的. nginx在启动后,会有一个master进程和多个worker进程. master进程主要用来管理worker进程: 包含: 1.接收来自外界的信号,向各work ...

  5. 深入理解Docker Volume(一)

    想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载镜像层并在其上添 ...

  6. 给openvpn客户分配固定ip地址

    虽然openvpn提供dhcp服务,但是dhcp是有租约的,到期后会重新分配ip,造成连接中断的问题,所以最好还是给客户端固定一个ip. 思路:开启客户端配置目录,然后为每一个客户建一个配置文件,里面 ...

  7. vim-snipmate编写snippet的语法

    vim-snipmate真的很好用,以前好多编写代码的问题得到完美的解决.还附带提升我对vim的理解和信心,在这里感谢一下作者.thank you. 1.现说一下我浓缩的重要语法. 1.定义是下面这样 ...

  8. SICP-Exercise 1.5

    Exercise 1.5.  Ben Bitdiddle has invented a test to determine whether the interpreterhe is faced wit ...

  9. hdoj1069 Monkey and Banana

    Monkey and Banana Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  10. SwitchOmega的详细配置——for Windows

    必看 先下载Shadowsocks客户端进行相应配置,然后只要对SwitchOmega 进行新建情景模式后简单配置即可. 本文不谈如何安装SwitchOmega只谈如何配置SwitchOmega 不会 ...