NGUI Clip Animation (UI动画)
效果预览
视频:http://pan.baidu.com/s/1ntr3XSt
运行环境
Unity 4.5, NGUI3.5, iTween
场景搭建
创建一个UIPanel,UIPanel下再创建一个UISprite,UIPanel选择SoftClip,然后给Panel绑定上PanelController.cs,拷贝4份。结构如下图
MaskManager
给UIRoot绑定PanelController.cs,Targets绑定上面创建的四个Panel,点击Play ,按数字键 0,1,2,3,4 切换效果
MaskManager代码
using UnityEngine;
using System.Collections;
using System.Collections.Generic; public class MaskManager : MonoBehaviour {
public GameObject[] Targets; private List<PanelController> clipList;
private float sw = 1024f;
private float sh = 576f; // Use this for initialization
void Start () {
clipList = new List<PanelController>();
foreach(var target in Targets) {
clipList.Add(target.AddComponent<PanelController>());
} Init();
} // Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.Alpha1)) {
ShowFullImage(0);
} else if(Input.GetKeyDown(KeyCode.Alpha2)) {
ShowFullImage(1);
} else if(Input.GetKeyDown(KeyCode.Alpha3)) {
ShowFullImage(2);
} else if(Input.GetKeyDown(KeyCode.Alpha4)) {
ShowFullImage(3);
} else if(Input.GetKeyDown(KeyCode.Alpha0)) {
Init();
}
} void Init() {
for(int i=0; i<clipList.Count; i++) {
var size = new Vector2((sw / clipList.Count), sh);
var offset = new Vector2(-sw * 0.5f + (i + 0.5f) * (sw / clipList.Count), 0f);
clipList[i].UpdateOffset(offset);
clipList[i].UpdateSize(size);
}
} void ShowFullImage(int id) {
for(int i =0; i<clipList.Count; i++) {
if(i != id) {
clipList[i].SetDepth(i);
} else {
clipList[i].SetDepth(clipList.Count);
}
}
clipList[id].UpdateOffset(new Vector2(0f, 0f));
clipList[id].UpdateSize(new Vector2(sw, sh));
}
}
using UnityEngine;
using System.Collections; public class PanelController : MonoBehaviour {
private UIPanel panel;
static private float animTime = 0.6f; void Awake() {
panel = GetComponent<UIPanel>();
} // Use this for initialization
void Start () {
} // Update is called once per frame
void Update () { } public void SetDepth(int depth) {
panel.depth = depth;
} public void UpdateSize(Vector2 size) {
var current = new Vector2(panel.baseClipRegion.z, panel.baseClipRegion.w);
iTween.ValueTo(gameObject, iTween.Hash("from", current, "to", size, "time", animTime, "onupdate", "OnUpdateSize"));
} public void UpdateOffset(Vector2 offset) {
iTween.ValueTo(gameObject, iTween.Hash("from", panel.clipOffset, "to", offset, "time", animTime, "onupdate", "OnUpdateOffset"));
} private void OnUpdateSize(Vector2 size) {
panel.baseClipRegion = new Vector4(0f, 0f, size.x, size.y);
} private void OnUpdateOffset(Vector2 offset) {
panel.clipOffset = offset;
}
}
NGUI Clip Animation (UI动画)的更多相关文章
- 【转】发布一个基于NGUI编写的UI框架
发布一个基于NGUI编写的UI框架 1.加载,显示,隐藏,关闭页面,根据标示获得相应界面实例 2.提供界面显示隐藏动画接口 3.单独界面层级,Collider,背景管理 4.根据存储的导航信息完成界面 ...
- Unity3D-深入剖析NGUI的游戏UI架构
Unity3D-NGUI分析,使用NGUI做UI须要注意的几个要点在此我想罗列一下,对我在U3D上做UI的一些总结,最后解剖一下NGUI的源码.它是假设架构和运作的. 在此前我介绍了自己项目的架构方式 ...
- iOS - Core Animation 核心动画
1.UIView 动画 具体讲解见 iOS - UIView 动画 2.UIImageView 动画 具体讲解见 iOS - UIImageView 动画 3.CADisplayLink 定时器 具体 ...
- Unity3D学习笔记(十四):Animation旧动画
animator(新动画系统):骨骼动画,骨骼驱动,格式化编辑,动画机图形化 animation(旧动画系统):物理系统,帧动画 一.如何建立动画文件 Animation Clip 手动添加动 ...
- 帧动画 连续播放多张图片动画 以及ui动画 SoundPool
drawable下有很多图片 可以 <?xml version="1.0" encoding="utf-8"?> <animation-li ...
- COCOS2D-X中UI动画导致闪退与UI动画浅析
前两天和同事一起查一个游戏的闪退问题,log日志显示最后挂在CCNode* ActionNode::getActionNode()函数中的首行CCNode* cNode = dynamic_cast& ...
- iOS开发基础知识:Core Animation(核心动画)
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core A ...
- Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)
1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...
- Android Property Animation 物业动画
效果图: Property Animation介绍: 出生在sdk3.0,是利用了View所拥有的属性,进行一系列的操作. 比方一个View有什么样的setAbc的属性,那么理论上就能够设置它. ...
随机推荐
- Docker: vmware企业级docker镜像私服--Harbor的搭建
1.下载harbor,地址https://github.com/vmware/harbor2.进入harbor-master/Deploy目录,修改harbor.cfg文件,主要修改以下信息 ...
- LR监测windows资源一般监测哪几个项?
计数器 指标 1. 平均事务响应时间 Average Transation Response Time 优秀:<2s 良好:2-5s 及格:6-10s ...
- RocketMQ专题2:三种常用生产消费方式(顺序、广播、定时)以及顺序消费源码探究
顺序.广播.定时任务 前插 在进行常用的三种消息类型例子展示的时候,我们先来说一说RocketMQ的几个重要概念: PullConsumer与PushConsumer:主要区别在于Pull与Pus ...
- js设计模式总结4
链模式 链模式:通过在对象方法中将当前对象返回,实现对同一个对象多个方法的链式调用,从而简化多次调用该对象多个方法时的对该对象的多次引用. 具体不多说:主要是方法最后return this; 委托模式 ...
- HDU 1535 Invitation Cards(逆向思维+邻接表+优先队列的Dijkstra算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1535 Problem Description In the age of television, n ...
- GCD之Source
参考:http://blog.csdn.net/lengshengren/article/details/12905811
- b'driver "overlay" failed to remove root filesystem 的解决方法
1.docker-compose启的nexus仓库意外dead 公司的maven私服nexus是通过docker-compose启动的,不知道什么原因意外死掉了.再次启动的时候报错: [root@ ...
- MVC删除操作前confirm提示
本段时间,忙于公司的ERP问题,博客也没有怎样更新了.昨晚于家中学习了MVC时,对删除记录前,让用户有后悔选择.即是说,能先给用户一个提示,然后再让用户决定是否删除记录.以前练习MVC,对删除记录,均 ...
- SQL Server T—SQL 函数
一 聚合函数(统计函数)!!!!! 计算个数 count( ) select count(*) from 表名 求和 sum( ) select sum(列名) from 表名 求平均数 ...
- SQL Server优化查询
1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条 ...