《Unity开发实战》——3.10节通过循环加载一组材质实现动画纹理(例如模拟视频)

简介:

本节书摘来自华章社区《Unity开发实战》一书中的第3章,第3.10节通过循环加载一组材质实现动画纹理(例如模拟视频),作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.10 通过循环加载一组材质实现动画纹理(例如模拟视频)
还可以让对象的材质有动画效果,比如一个模拟的飞船控制间的计算机屏幕,或者绘制一个可点击的物体作为按钮引起玩家的注意。Unity专业版提供一个把视频作为纹理的解决方案(免费版没有这个功能),也可以用代码实时修改对象的纹理。

3.10.1 准备工作
需要一组图片作为播放序列,最好命名也是有序的,比如computerScreen1.png、computerScreen2.png等。

3.10.2 操作步骤
请按照以下步骤实现动画纹理:
1)创建一个新的场景。
2)创建一个 Plane,在坐标点 (0,0,0),把旋转设置成 (-90,0,0),这样刚好直接面对摄像机。
3)创建一个脚本文件夹,命名为ScriptClasses,创建一个C#脚本类命名为Animated-Texture (把下面的代码粘贴到类中):


1e74a84e545349033946fff5f1b88a8290bcd39a


bd36637b7c322b679bf3543ff0a7b4063b0ca6dd

3.10.3 实现原理
imageArray 数组存储了图片序列, Awake()方法检查数组中是否有内容,并调用PlayAnimation()方法。
PlayAnimation()方法中有一个无限循环,循环中调用显示下一张图片的方法,然后让PlayAnimation()方法等几秒(frameInterval变量)作为时间间隔。
ChangeImage()方法寻找序列中的下一张图片,让其父游戏对象的材质用这张图片。imageIndex 变量实例一直存储着数组中当前播放图片的索引。如果上一张图片已经显示过了,给索引值加1,然后做一个取模的运算,结果是数组的下一个最大索引,或是0。函数内的nextImage变量存储数组中下一张要显示的图片,方法的最后一行代码把父对象的材质的主纹理设置成图片。

3.10.4 更多内容
也可以用一个类似的技术实时修改材质。
使用材质取代2D纹理图片
如果想用材质取代纹理图片,可以像下面的代码用一个名为materialArray的材质数组,修改父对象的renderer的sharedMaterial,见代码中的最后一行:


4cbc8ccb51d44fe51978fe5ca4a3d82ff3c8ba1c
相关文章
|
JSON atlas 图形学
unity之spine骨骼动画使用
unity实现spine骨骼动画使用
unity之spine骨骼动画使用
|
4月前
|
缓存 API 图形学
【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)
【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)
76 0
|
4月前
|
图形学 iOS开发
Unity——动效与缓动动画
Unity——动效与缓动动画
|
4月前
|
人工智能 算法 图形学
Unity 动画系统基本概念
Unity 动画系统基本概念
|
8月前
|
存储 编译器 图形学
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
102 0
|
8月前
|
存储 编译器 图形学
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
104 0
|
10月前
|
机器人 图形学 Ruby
【Ruby 2D】【unity learn】控制敌人随机运动以及动画控制
【Ruby 2D】【unity learn】控制敌人随机运动以及动画控制
|
10月前
|
定位技术 API 图形学
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
129 1
|
10月前
|
图形学
unity-初级动画系统
unity-初级动画系统
70 0
Unity-Timeline制作动画(快来制作属于你的动画吧)
Unity-Timeline制作动画(快来制作属于你的动画吧)
Unity-Timeline制作动画(快来制作属于你的动画吧)