• 一Tiling 和 Offset 概述
  • 二示例
  • 三SetTextureScale 和 SetTextureOffset
  • 参考

一、Tiling 和 Offset 概述

在 Unity 中,新建一个材质,会要求选择使用哪个着色器,默认的是 Diffuse 着色器。确定了着色器后,在材质属性面板中,就会出现该着色器需要用到的一些属性,一般是贴图及对应的属性。

  • Offset

    表示贴图 UV 坐标的起始位置,取值范围是 0~1。超过 1 的部分取余,so Offset 值为 1.0 和 0 时的效果是一样。Offset > 0 时,向右 Offset % 1 为起始位置;Offset < 0 时,向左 |Offset| % 1 为起始位置。

  • Tiling

    表示从 Offset 指定的起始位置开始,分别在 X/Y 轴,截取 指定比列大小 的原始贴图,作为输出贴图。超过 1 的部分会自动拼接。如果 Texture 的 Wrap Mode 是 Repeat,则超出 1 的部分由原始贴图拼接;如果 Wrap Mode 是 Clamp,则超出 1 的部分由空白拼接。

二、示例

以一张图片为例,下面分别为原图和直接贴到一个Plane上的效果。

平面贴图后出现了X和Y方向倒置问题。

下面是使用各种不同 Tiling 和 Offset 下的效果,Texture 的 Wrap Mode 为 Repeat。

可以通过更新材质的 Offset 和 Tiling 属性来制作动画。

下图是16个表情格图标,可以每次只显示图标中的某一小块区域来形成动画。

将该贴图应用到一个平面上面,再在该平面上附加如下代码:

using UnityEngine;
using System.Collections;  public class Test : MonoBehaviour {  // Use this for initialization  public int colCount =  4;  public int rowCount =  4;  //vars for animation  public int  rowNumber  =  0; //Zero Indexed  public int colNumber = 0; //Zero Indexed  public int totalCells = 16;  public int  fps     = 10;  //Maybe this should be a private var  private Vector2 offset;  //Update  void Update () { SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,fps);  }  //SetSpriteAnimation  void SetSpriteAnimation(int colCount ,int rowCount ,int rowNumber ,int colNumber,int totalCells,int fps ){  // Calculate index  int index  = (int)(Time.time * fps);  // Repeat when exhausting all cells  index = index % totalCells;  // Size of every cell  float sizeX = 1.0f / colCount;  float sizeY = 1.0f / rowCount;  Vector2 size =  new Vector2(sizeX,sizeY);  // split into horizontal and vertical index  var uIndex = index % colCount;  var vIndex = index / colCount;  // build offset  // v coordinate is the bottom of the image in opengl so we need to invert.  float offsetX = (uIndex+colNumber) * size.x;  float offsetY = (1.0f - size.y) - (vIndex + rowNumber) * size.y;  Vector2 offset = new Vector2(offsetX,offsetY);  renderer.material.SetTextureScale ("_MainTex", size);  renderer.material.SetTextureOffset ("_MainTex", offset);  }  }  

播放后即可得到动态显示每个子图标的动画。

三、SetTextureScale 和 SetTextureOffset

SetTextureScale 和 SetTextureOffset 分别用于设置材质’s各种贴图纹理的 缩放量 和 偏移量。

Shader 相当于配色方案,将材质的各种贴图整合 Mix。不同的 Shader,需要的贴图数量和种类也不一样。为此,在修改材质纹理属性的时候,为区别各种贴图,这两个方法的第一个参数常用于区别各种贴图。

  • “_MainTex”

    主要的漫反射纹理,也能通过 mainTextureScale/mainTextureOffset 属性访问。

  • “_BumpMap”

    法线贴图。

  • “_Cube”

    反射cubemap。(盒子贴图)

参考

[1].http://blog.csdn.net/kfqcome/article/details/19343323

Material 的 Tiling 和 Offset相关推荐

  1. 图文详解Unity3D中Material的Tiling和Offset是怎么回事

    图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔 ...

  2. unity material之tiling和offset属性

    在Unity中,使用材质或者着色器是通过创建一个材质来实现的,新建一个材质,会要求选择使用哪个着色器,默认的是Diffuse着色器.确定了着色器后,在材质属性面板中就会出现该着色器需要用到的一些属性, ...

  3. Unity Tiling和offset的使用

    offset是显示框的偏移量 1)拿flappy bird素材来说,起始状态是这种↓. 注意显示框(黄色).它包含的范围是这种↓ 2)当offset_x设置为0.5的时候,显示框(黄色)包含的范围应该 ...

  4. 塞尔达风之杖技术分析-角色渲染和面部表情

    塞尔达风之杖技术分析-角色渲染和面部表情. https://zhuanlan.zhihu.com/p/26140321 首发于游戏开发启示录 塞尔达风之杖技术分析-角色渲染和面部表情 拳四郎 ​ 游戏 ...

  5. BIT祝威博客汇总(Blog Index)

    +BIT祝威+悄悄在此留下版了个权的信息说: 关于硬件(Hardware) <穿越计算机的迷雾>笔记 继电器是如何成为CPU的(1) 继电器是如何成为CPU的(2) 关于操作系统(Oper ...

  6. [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起

    [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起 在上一篇里我给出了重制的坦克舰队效果图和试玩程序.本篇介绍一下玩家坦克和敌方坦克碰撞问题. +BIT祝威+悄悄在此留下版了个 ...

  7. Unity3d Material(材质) 无缝拼接

    Unity3d Material(材质) Edit by @灰太龙 在做一个项目的过程中,遇到动态切换壁纸的功能,问题点在无缝拼接! 那我们先查查Unity3d 中的材质球,里面有个参数 Tiling ...

  8. sp 导出unity哪个_GitHub上发现的一个导出Unity3D场景数据的工具

    1.源地址 2.导出脚本 脚本名:Unity3DExporter.cs ```C# using UnityEditor; using UnityEngine; using System; using ...

  9. Node Introduce

    TexWithXForm – A texture sample with tiling and offset editable in the material. Texture – A texture ...

最新文章

  1. Swift语言中class、struct、enum的联系与区别
  2. android xml pid vid,增加属性标识摄像头的vid与pid,以便知道摄像头与设备文件的对应关系...
  3. 计算机网络运输层之多路复用与多路分解
  4. Android热修复升级探索——SO库修复方案 1
  5. asp.net core新特性(1):TagHelper
  6. 3个表的连接需要 个关联条件。_购物篮分析(关联商品销售分析)
  7. 工具丨超好用的免费AWR分析工具
  8. 实现 iOS UICollectionView的事件透传
  9. verilog语法实例学习(3)
  10. 你必须知道的10项大数据思维原理
  11. 云原生技术开放日PPT大放送 | 五星级的云原生开发体验
  12. OSDev——GCC交叉编译器
  13. U-Boot中Distro_bootcmd的实现分析
  14. Ringbuffer同步问题分析
  15. 鲸飞酒店云PMS v3.0.22
  16. RIGHT-BICEP测试第二次
  17. 北大邮箱收件服务器,北京大学网络服务
  18. DNS协议分析(域名解析)
  19. 求助打开网站显示welcome to nginx!
  20. 长虹32N1Linux是什么系统,2018最新最全长虹电视型号机芯软件对照表

热门文章

  1. Nginx使用的php-fpm的三种进程管理方式及优化 pm.start_servers pm.max_children参数说明
  2. mne进行ica分析
  3. 只读ppt如何获得可编辑版本?
  4. IAR使用方法建立工程文件超详细操作步骤
  5. mathmatica矩阵的运算,相乘,转置,求逆矩阵
  6. 做一个网站真的有那么难吗?
  7. 百度网盘如何在线播放电影?
  8. AI三大主义:符号主义、联结主义、行为主义
  9. 运用百度智能云车型识别API分析具体车型
  10. P1282 多米诺骨牌