一、帧动画

1: 美术准备好一个连续动作的离散图片;
2: 程序在准确的时间来切换这个图片;
3: 优点: 简单,速度快;
缺点:资源占用相对过大;

二、frame_anim组件编写

1: 代码里面强制要求加入Image组件;[RequireComponent(typeof(Image))]
2: 帧动画的参数:
(1) Sprite数组;
(2) 间隔时间;
(3) 是否循环播放;
(4) 是否在加载的时候播放;
3: 根据时间让Image组件显示正确的帧;

三 、实例步骤

1.创建一个Canvas

2.对Canvas进行初始化

3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg,拖进背景图片到这个节点中。

4.把帧动画贴图放进一个anim的文件夹中,anim在Resources文件夹下

5.创建一个空节点叫anim,在canvas节点下面。

6.创建一个脚本frame_anim,挂载在anim节点下面。

7.frame_anim脚本内容

using UnityEngine;
using System.Collections;
using UnityEngine.UI; // 我们当前代码强制要求要加入一个Image组件,
// 如果没有Image组件,那么自动加上,如果有就使用;
// 如果你的代码要求这个节点必须挂某个组件,那么
// 使用RequireComponent
[RequireComponent(typeof(Image))] public class frame_anim : MonoBehaviour {
// 我们这个动画所需要的画面;
public Sprite[] sprite_frames;
// 帧动画的间隔时间
public float duration = 0.1f;
// 是否循环播放
public bool is_loop = false;
// 是否在加载的时候开始播放;
public bool play_onload = false; private float played_time;
private bool is_playing = false; private Image img;
// Use this for initialization
void Start () {
this.img = this.GetComponent<Image>();
if (this.play_onload) {
if (this.is_loop) {
this.play_loop();
}
else {
this.play_once();
}
}
} // 只播放一次
void play_once() {
if (this.sprite_frames.Length <= ) {
return;
} this.played_time = ;
this.is_playing = true;
this.is_loop = false;
} // 循环播放
void play_loop() {
if (this.sprite_frames.Length <= ) {
return;
}
this.played_time = ;
this.is_playing = true;
this.is_loop = true;
}
// 停止当前的动画播放
void stop_anim() {
this.is_playing = false;
}
// Update is called once per frame
void Update () {
if (this.is_playing == false) {
return;
} //
float dt = Time.deltaTime;
this.played_time += dt;
// 向下取整;
int index = (int)(this.played_time / this.duration);
if (this.is_loop == false) {
// 结束了
if (index >= this.sprite_frames.Length) { // 停止播放
this.is_playing = false;
this.played_time = ;
}
else {
this.img.sprite = this.sprite_frames[index];
}
}
else {
// 超过了范围,减掉一个周期
while (index >= this.sprite_frames.Length) {
this.played_time -= (this.duration * this.sprite_frames.Length);
index -= this.sprite_frames.Length;
} this.img.sprite = this.sprite_frames[index];
}
// end
}
}

8.在Inspetor视图的frame_anim脚本里面展开Sprite_frame,size设置为10,把10张帧图片拖进去

9.在Inspetor视图的frame_anim脚本下勾选play_onload,选择是否勾选is_loop循环播放,设置动画速率Duration,然后点击运行。

关于Unity中的帧动画组件的编写的更多相关文章

  1. 如何在unity中使用龙骨动画

    龙骨 龙骨是Egret公司的一个用来做动画的软件,本文分享一下如何在Unity2D中使用龙骨导出的2D动画 导出动画 在龙骨中文件->导出,导出动画数据和纹理到Unity的项目中,如果打包了的话 ...

  2. 让 CXK 来教你实现游戏中的帧动画(上)

    一款游戏除了基本功能之外,还需要给玩家更多视觉上的刺激,这个时候就需要用特效来装饰.本文就将介绍 Cocos Creator 的动画系统,除了标准的位移.旋转.缩放动画和序列帧动画以外,这套动画系统还 ...

  3. Android中的帧动画与补间动画的使用

    前言 在日常开发中,我们有时候须要一些好看的动画效果,这时能够充分利用Android提供的这几种动画来实现. Android提供了3种类型的动画: 补间动画:补间动画能够应用于View,让你能够定义一 ...

  4. 转 [教程] Unity3D中角色的动画脚本的编写(二)

              在上一篇,我们介绍了有关Animation这个类中的部分方法,我后来想了想,这么介绍也不是个办法(其实有些方法我自己也没用过),该介绍点实际的东西了,毕竟我们是要做东西出来的.那好 ...

  5. (转) [教程] Unity3D中角色的动画脚本的编写(一)

    ps: 这两天研究unity3d,对动画处理特别迷糊,不知FBX导入以后,接下来应该怎么操作,看到这篇文章,感觉非常好,讲解的很详细. 已有好些天没写什么了,今天想起来该写点东西了.这次我所介绍的内容 ...

  6. (转) Unity3D中角色的动画脚本的编写(三)

    在上一篇,我们具体的讲解了有关动画的融合,也提到了有关动画状态的权重问题.那么这次,我来以一个例子的形式来向大家讲解动画的叠加,或许会涉及到多方面的知识,我力求一次讲清.好了,我们开始吧! 首先我们必 ...

  7. 关于Unity中旧版动画系统的使用

    Unity在5.X以后,有一个旧版的动画系统和新版的动画系统. 新版的动画系统是使用Unity动画编辑器来调的,调动画和控制动画 旧版的动画系统是用其他的第三方软件调好后导出到一个FBX文件里面,就是 ...

  8. 使用Unity中的Box Collider组件完成游戏场景中的碰撞检测功能

    一.介绍 目的:通过Unity自带的组件完成游戏场景中的碰撞检测功能. 软件环境:Unity 2017.3.0f3 二.实现过程 1,在面板中点击Add Component按钮 2,添加Box Col ...

  9. Java乔晓松-android中的帧动画FrameByFrame

    先看效果后上代码: 动画开始---- 动画切换的界面---- 动画播放完毕后的跳转界面----- 重要的方法: imageView.setBackgroundResource(R.anim.frame ...

随机推荐

  1. 控件不响应OnMouseMove

    原文链接: http://bbs.csdn.net/topics/370017205 问:我继承CStatic写了个CStaticEx,设为Rectangle类型,用来画图.把这个控件添加到了一个Vi ...

  2. python-循环与判断练习题

    一.设计这样一个函数,在指定的文件夹上创建10个文本,以数字给它们命名. def text_creation(): path ='D:/study/python3/w/' for name in ra ...

  3. Android Intent Scheme URLs攻击

    0x0 引言 我们知道,在Android上的Intent-based攻击非常普遍.这样的攻击轻则导致应用程序崩溃.重则可能演变提权漏洞.当然,通过静态特征匹配,Intent-Based的恶意样本还是非 ...

  4. Struts如何获取客户端ip地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  5. React dva 的使用

    各大传送门: DvaJS Github DvaJS API与示例 了解 dva- dva = React-Router + Redux + Redux-saga + fetch - dva的初衷是(其 ...

  6. centos7 启动httpd的时候为什么显示是这样的

    我输入 service httpd start显示一下内容:Redirecting to /bin/systemctl start httpd.service -------------------- ...

  7. JavaScript:表单常用验证脚本(整理)

    以下内容根据网上资源整理而来,主要来源是CSDN一个供下载的check.js,源码地址找不到了. 1. 检查输入字符串是否为空或者全部都是空格 /* 检查输入字符串是否为空或者全部都是空格 输入:st ...

  8. excel错误:外部表不是预期的格式 错误

    环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一 ...

  9. [k8s]容器化node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric搜集,grafana展示

    Prometheus 的核心,多维数据模型 传统监控工具统计数据方式 指标多 - 需求1,统计app1-3,的(总)内存,则定义3个指标 container.memory_usage_bytes.we ...

  10. asp.net kindeditor 后台取不到数据

    今晚搞了3个小时,才搞定这个破问题. 页面上使用kindeditor,提交的时候使用了LinkButton,按钮后台事件私活娶不到kineditor里的数据. 最终一步一步测试,终于发现是LinkBu ...