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

材质中贴图均有tiling和offset两个属性,它们用来定义当前材质球所使用的贴图区域(

直接将贴图贴到平面上一般会出现X和Y坐标倒置的问题,这个时候可以将tiling取反或者旋转贴图所在平面进行调整)。

offset:指明使用贴图的起始位置,取值范围为0-1

tiling:指明从offset位置处的大小区域,区域的取值范围一般为(-1,1),超过的话部分会按比例生成新的区域拼接上原先的。

也就是说,tiling指明了使用的贴图为输入贴图的多少倍,超过1的会自动拼接,同时offset指明了使用的贴图在输入贴图处的起始位置,假如位置超过了1,就会对1取余。

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

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

下面是使用各种不同tiling和offset下的效果

(上图中对于不同宽度的tiling,贴在的平面上的宽度没有对应的调整,所以看起来会有点比例失真)

可以通过更新材质的offset和tiling属性来制作动画

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

将该贴图应用到一个平面上面,再在该平面上附加如下代码:
using UnityEngine;
using System.Collections;public class Test : MonoBehaviour {// Use this for initializationpublic int colCount =  4;public int rowCount =  4;//vars for animationpublic int  rowNumber  =  0; //Zero Indexedpublic int colNumber = 0; //Zero Indexedpublic int totalCells = 16;public int  fps     = 10;//Maybe this should be a private varprivate Vector2 offset;//Updatevoid Update () { SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,fps);  }//SetSpriteAnimationvoid SetSpriteAnimation(int colCount ,int rowCount ,int rowNumber ,int colNumber,int totalCells,int fps ){// Calculate indexint index  = (int)(Time.time * fps);// Repeat when exhausting all cellsindex = index % totalCells;// Size of every cellfloat sizeX = 1.0f / colCount;float sizeY = 1.0f / rowCount;Vector2 size =  new Vector2(sizeX,sizeY);// split into horizontal and vertical indexvar 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);}}

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

unity material之tiling和offset属性相关推荐

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

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

  2. Material 的 Tiling 和 Offset

    一Tiling 和 Offset 概述 二示例 三SetTextureScale 和 SetTextureOffset 参考 一.Tiling 和 Offset 概述 在 Unity 中,新建一个材质 ...

  3. jxls向右循环为什么会间隔单元格_VBA中单元格的Offset属性,你是否能灵活的利用呢?...

    大家好,我们今日继续讲解VBA代码解决方案的第122讲内容:如何在VBA中使用单元格Offset 属性.其实这讲的内容非常的简单,只是有很多的朋友要求再详细的讲一下,顺便再引申一下.谈到Offset属 ...

  4. Js之offset属性与style属性的区别

    Js之offset属性 offset翻译过来就是偏移量, 我们使用 offset 系列相关属性可以动态的得到该元素的位置.大小等. 如果元素没有父级元素或者父级元素没有定位(祖先元素也可以),则以bo ...

  5. Unity 之 打包参数 -- Player面板属性详解

    Unity 之 Project Setting -- Player 面板属性详解 前言 一,Player 1.1 属性说明 1.2 效果展示 二,ICON(图标) 2.1 属性说明 2.2 使用示例 ...

  6. Unity Tiling和offset的使用

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

  7. Unity着色器常用关键字及属性

    看了好多次shader,不过还是感觉无从下手的去写shader,然后看shader的效果 个人认为还是因为shader基础打得不够扎实,顾特意再重温shader相关书籍的时候,看见有些常用关键字时,把 ...

  8. unity Material的批量修改和单独处理

    蹭一波1024的热度,祝大家节日快乐. Material unity为我们提供了Material这一模块,使得我们对游戏对象的各种渲染操作更加便捷. 一个完整的Material由shader和Text ...

  9. Unity如何批量修改材质的属性

    Unity导入fbx资源文件的时候,需要修改材质的某个属性,其实修改某个属性为同一个值还是比较简单的,只需要全选所有的材质,然后在Inspector里面进行修改就行了,就会批量修改所有的材质属性. 如 ...

最新文章

  1. K-均值聚类(K-Means) C++代码实现
  2. Fedora开启ssh服务
  3. 32M内存 跑linux内核,32位Linux单进程4G内存限制
  4. 这种奇奇怪怪的符号,只能用latex打出来,如果实在不行,>---|-->>也行
  5. 使用Cobertura,JUnit,HSQLDB,JPA涵盖您的测试
  6. Linux C 编程技巧--利用有限状态机模型编程
  7. linux mysql 端口配置文件_linux虚拟机中各服务端口及配置文件路径
  8. python面试技巧和注意事项_Python 程序员面试须知须会的5个问题
  9. php软件开发--laravel框架
  10. 你不知道的javascript_你不知道的javascript(上)
  11. OSPF的网络类型特征总结
  12. assetbundle能不能删除_Addressable卸载单个资源的疑问
  13. Ubuntu系统日志分析
  14. 如何远程linux服务器桌面,LINUX操作系统如何远程登录桌面
  15. 获取某年的所有周日期
  16. 好用的函数在线绘图工具
  17. 【18】微信小程序:05-WePY简介、WePY的安装与运行、WePY文件介绍、WePY框架开发规范与使用
  18. Paul Graham:撼动硅谷的人(译文)
  19. 如何解决‘CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’错误
  20. 惠普暗影精灵4笔记本如何U盘重装系统教学

热门文章

  1. WIFI营销读书笔记之二:跑马圈地
  2. 编程常用单词1500个
  3. 凹凸贴图(Bump Map)实现原理以及与法线贴图(Normal Map)的区别
  4. 记工信部列入黑名单的域名释放后可以重新注册的jeeace.com使用记录
  5. 视觉SLAM十四讲笔记-第四讲 李群与李代数
  6. 室内定位技术之UWB篇
  7. 喜报|知道创宇ScanA入选华为云内容安全领域首家联营联运生态伙伴
  8. CQHTTP 以HTTP形式制作你的QQ机器人
  9. 计算机突然无法连接网络,win7电脑突然不能上网的四种解决方案
  10. Either your server has no Maven installations defined, or the requested Maven version does not exist