DoTween学习笔记(二) UGUI结合使用(实现一些简单效果)

UGUI官方实例中是使用Animation来控制UI的移动,放大缩小动画等等, Animation来控制UI的动画工作量实在是太多了, 所以我们一般使用itween,DoTween. 来控制动画, 这样工作量大大减少. 那今天我们来学习下UGUI + DoTween吧

 

UGUI进行简单的移动,放大,旋转

public class MyClass : MonoBehaviour {
    void Start () {
        Image image = transform.GetComponent<Image>();
        //DoMove的坐标系是左下角为准,移动到100,100位置
         image.rectTransform.DOMove (new Vector2(100,100),1f);
        //以目前坐标点向移动到当前坐标x+100,当前坐标y+100
        image.rectTransform.DOMove (new Vector2(image.rectTransform.position.x + 100,image.rectTransform.position.y + 100),1f);
        //当前sacle(1,1,1)1秒内添加到(3,3,1)
        image.rectTransform.DOBlendableScaleBy (new Vector2(2,2),1f);
        //旋转到180度
         image.rectTransform.DORotate (new Vector3(0,0,180),1f);
    }
}

 

UGUI 锚点和anchoredPosition 关系

ancharedPosition的x,y相对于锚点产生的坐标. 盘子在写一个摇杆UI时候,摇杆只有在左下角,所以摇杆设置左下角,我根据用户点击屏幕的位置Input.mousePosition.x 和 Input.mousePosition.y赋值给摇杆的anchoredPosition 所以功能是显示正常的. 但是我有一次小心操作就把摇杆的锚点设置成屏幕中心, 不管我怎么点击摇杆都在右上的位置(大家能想象出这种效果吗)

 

Tweener介绍: 它表示一种动画,比如想前移动,然后变颜色

 

Sequence介绍:

Sequence是一个队列,你可以理解成它能帮你一步一步或同时的播放一些动画.

Sequence.Append是在序列的末端插入一个Tweener,如果前面的Tweener都执行完了,就执行这个Tweener。

Sequence.Join是在序列末端插入一个Tweener,不同的是,这个Tweener将与前一个非Join加进来的Tweener并行执行。

 

实现Text的漂浮进出效果

代码:

using UnityEngine;
using System.Collections;
using DG.Tweening;
using UnityEngine.UI;

public class TextFlotageEffect : MonoBehaviour {

    public Text text;

    private Color originColor;          //原始颜色
    private Vector3 originPos;          //原始坐标
    private Sequence sequence;          //动画队列
    private bool isAction;              //是否可以重新播放

    public void Update()
    {
        if(Input.GetKeyDown(KeyCode.A))
        {
            ShowBloodText();
        }
    }

    public void ShowBloodText()
    {
        if (!isAction)
        {
            isAction = true;
            RectTransform rt = text.rectTransform;
            originPos = text.rectTransform.position;
            originColor = text.color;

            text.color = new Color(text.color.r, text.color.g, text.color.b, 0);
            sequence = DOTween.Sequence();                                          //创建顺序列
            Tweener move1 = rt.DOMoveY(rt.position.y + 50, 0.5f);                   //
            Tweener move2 = rt.DOMoveY(rt.position.y + 100, 0.5f);

            Tweener alpha1 = DOTween.To(() => text.color, x => text.color = x, new Color(text.color.r, text.color.g, text.color.b, 1), 1f);
            Tweener alpha2 = DOTween.To(() => text.color, x => text.color = x, new Color(text.color.r, text.color.g, text.color.b, 0), 1f);

            sequence.Append(move1);
            sequence.Join(alpha1);
            sequence.AppendInterval(0.2f);
            sequence.Append(move2);
            sequence.Join(alpha2);
            sequence.AppendInterval(0.2f);
            sequence.OnComplete(OnComplete1);
        }

    }

    public void OnComplete1()
    {
        text.rectTransform.position = originPos;
        text.color = originColor;
        Debug.Log("完成移动了");
        isAction = false;
    }

}

时间: 2024-10-18 11:39:09

DoTween学习笔记(二) UGUI结合使用(实现一些简单效果)的相关文章

DoTween学习笔记(二) UGUI结合使用

UGUI官方实例中是使用Animation来控制UI的移动,放大缩小动画等等, Animation来控制UI的动画工作量实在是太多了, 所以我们一般使用itween,DoTween. 来控制动画, 这样工作量大大减少. 那今天我们来学习下UGUI + DoTween吧   UGUI进行简单的移动,放大,旋转 public class MyClass : MonoBehaviour { void Start () { Image image = transform.GetComponent<Ima

【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作

任何的学习,光看不练是学不好的.所以这次就总结回顾下怎么制作MMROPG类游戏中的小地图.在MMROPG类游戏里,主角在游戏世界里走动时,一般在屏幕右上角都会有一个区域来显示当前游戏场景的小地图.主角在游戏世界里走动,小地图里代表着主角的小标记也会随之移动.那怎么实现咧? 首先需要确定两个贴图,第一个是右上角的小地图背景贴图,应该是从Y轴俯视向下截取主角所在的位置大地图.第二个就是主角的位置大贴图.在本例中,因为没有学习unity地图制作,所以地图用一个面对象代替,主角用立方体代替,使用GUI来

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

Spring Batch学习笔记二

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自定义的工作单元,它是Job的主要构件块:每一个Step由三部分组成:ItemReader.ItemProcessor.ItemWriter:这三个部分将执行在每一条被处理的记录上,ItemReader读取每一条记录,然后传递给ItemProcessor处理,最后交给ItemWriter做持久化:It