首页 > 其他分享 >NGUI Tweens组件:实现流畅动画的魔法

NGUI Tweens组件:实现流畅动画的魔法

时间:2024-08-04 12:26:23浏览次数:16  
标签:Tween 播放 动画 Tweens 魔法 tween NGUI

引言

在Unity游戏开发中,UI动画是提升用户界面交互性和吸引力的重要手段。NGUI(Next-Gen UI)框架中的Tweens组件,为UI元素提供了平滑且高效的动画效果。本文将详细介绍NGUI Tweens的使用方法和技巧,帮助你轻松实现UI动画效果。

NGUI Tweens简介

NGUI Tweens是NGUI框架中的一组用于创建动画效果的工具。“Tween"一词来源于"in-betweening”(中间帧动画),它是一种在两个关键帧之间自动生成中间帧的技术,以实现平滑的过渡效果。

Tweens的核心优势

  1. 简单易用:通过代码或Inspector面板即可轻松创建动画。
  2. 性能优化:专为Unity设计,优化了性能,适合移动平台。
  3. 类型丰富:支持多种类型的动画,如位置、缩放、颜色、旋转等。
  4. 链式调用:Tween动画可以链式调用,实现复杂的连续动画效果。

组件详解

在这里插入图片描述
要将Tween添加到widget中,您可以右键单击它,然后从Tween菜单中选择适当的选择。或者,如果您不选择widget,您可以浏览 NGUI 菜单 (NGUI -> Tween)。最后但并非最不重要的一点是,如果您愿意,您还可以简单地按名称添加适当的脚本。

无论您采用哪种路线,一旦您将tween添加到对象中,该tween将默认处于活动状态,并且一旦您点击“播放”,您就会注意到tween将正在播放。如果您不希望它立即播放,只需取消选中脚本名称旁边的复选框来禁用该组件即可。

尽管有各种不同的tweens,但它们都继承自相同的基类 (UITweener) 并具有相同的通用功能。它们都有 From 和 To 字段,表示起始值和最终值。它们还具有动画曲线,可让您微调值从一个值到另一个值的插值方式。

通过 Duration 字段,您可以指定补间完全动画化所需的时间(以秒为单位)。您还可以添加Start Delay,以防您不希望tween
立即播放。此值也以秒为单位。

Tween Group 允许您在同一对象上拥有多个相似的补间,并通过匹配组 ID 有选择地触发它们。

现在说到触发补间,您可以通过在按钮的 OnClick 部分中指定函数来手动调用其 Play() 函数来执行此操作。
在这里插入图片描述
您还可以通过附加 UIPlayTween 脚本 (Attach -> Play Tween Script) 来采用更高级的路线。它为您提供了更多的选择。
在这里插入图片描述
首先,您需要指定一个Tween目标。这将是具有您想要触发的tween或多个补间的游戏对象。您还可以选择性地通过标记“包含子对象”选项来激活所有子对象上的tween。

与上面的实际tween一样,Tween Group 字段允许您选择触发哪些tweens。

Trigger condition 允许您指定哪种操作将触发tween播放。播放方向让您可以选择播放方式。如果目标被禁用,您可以选择激活它或让它保持禁用状态(这包括故意标记为禁用的tween,这样它们就不会立即播放,以防您想知道!

如果tween已经在播放,您可以选择从头开始重新启动它,让它从原来的位置继续,或者仅在它已经完成播放时重新启动。您还可以让tween在完成后禁用目标 - 当您使用tween从一个菜单过渡到另一个菜单时,这是一件有用的事情。

最后,如果您想在tween完成播放后执行某些远程函数,您可以通过将目标游戏对象拖入 Notify 字段并从列表中选择适当的函数来实现。像所有 NGUI 通知一样,它必须是“public void FuncName (void)”类型,如下所示:

    public void MyNotification ()
    {
        Debug.Log(UITweener.current.name + " has finished playing!");
    }

提示

  • 您可以创建一个tween,该tween从开始到结束,然后通过调整动画曲线返回到起点,使其形状像一个倒置的“U”。
  • 您可以通过让一个tween的 OnFinished 通知触发另一个补间的 Play() 函数,让tween在daisy chain中相互触发。
  • 要通过代码创建tween,请像这样使用其 Begin() 函数:
TweenPosition.Begin(tweenGameObject, duration, targetPosition);

Tweens的基本使用

  1. 添加Tween组件:选择UI元素,在Inspector面板中添加所需的Tween组件,如TweenPositionTweenScaleTweenColor等。
  2. 配置动画参数:设置动画的起始属性、结束属性、持续时间和动画曲线。
  3. 触发动画:可以通过代码或UI事件触发动画的播放。

Tweens的代码控制

NGUI Tweens不仅支持在Inspector面板中配置,还可以通过代码进行更灵活的控制。以下是使用代码控制Tween动画的示例:

using UnityEngine;
using NGUITween;

public class TweenExample : MonoBehaviour
{
    public GameObject uiElement; // 需要动画的UI元素
    public Vector3 startPosition;
    public Vector3 endPosition;
    public float duration = 1.0f; // 动画持续时间

    void Start()
    {
        // 播放位置动画
        TweenPosition.Begin(uiElement, duration, startPosition, endPosition);
    }

    public void PlayScaleTween()
    {
        // 播放缩放动画
        TweenScale.Begin(uiElement, duration, new Vector3(1.5f, 1.5f, 1.5f));
    }

    public void PlayColorTween()
    {
        // 播放颜色动画
        TweenColor.Begin(uiElement, duration, Color.red);
    }

    // 更多Tween方法可以根据需要调用...
}

链式Tween动画

NGUI Tweens支持链式调用,可以轻松实现一系列连续的动画效果:

TweenPosition.Begin(uiElement, 0.5f, Vector3.up * 50f, Vector3.zero)
    .SetDelay(1f)
    .SetOptions((Ease) 2)
    .OnComplete(() => {
        // 第一个动画完成后执行的操作
    })
    .SetTarget(uiElement)
    .Begin();

结语

NGUI Tweens为Unity UI动画提供了一个强大而灵活的工具集。无论是简单的属性变化,还是复杂的连续动画,Tweens都能够轻松应对。掌握NGUI Tweens的使用,将极大地丰富你的UI动画效果,提升游戏的整体体验。更多NGUI开发教程,请加入知识星球:游戏新质力。

NGUI下载地址

标签:Tween,播放,动画,Tweens,魔法,tween,NGUI
From: https://blog.csdn.net/UnityBoy/article/details/140855677

相关文章

  • 程序员的魔法石!
    本文由ChatMoney团队出品AI自己写代码,这只是传说?还是摸鱼新指南?AI出现之前,从来都是老板或产品经理提需求,程序员熬夜加班吭哧吭哧写代码或者是从Github,Stackoverflow上control+c,control+v。但随着大语言模型的发展,AI自动补全和理解意图的能力突飞猛进,不仅能补全中文,英文,当然也......
  • 11:Python字符串的魔法属性2
    test='alex'v=test[2]#索引,下标,获取字符串中的某一个字符print(v,-1)test='alexsasdf'v=test[0:3]#0=<v<3print(v,-2)v1=test[0:-1]#切片print(v1,-3)v2=len(test)print(v2,-4)v3=len("我是中国人")#len获取当前字符串中由几个字符组成,python2......
  • Linguistics-English-
    Firstanswerfromateacher:https://jakubmarian.com/so-thus-therefore-and-hence-in-english/"So,thus,therefore,andhenceinEnglish"SinceyouarereadingthisarticleinEnglish,theoddsareyoualreadyknowwhattheconjunction"so&q......
  • 洛谷P2801 教主的魔法之分块板子
    洛谷P2801题解传送锚点摸鱼环节教主的魔法题目描述教主最近学会了一种神奇的魔法,能够使人长高。于是他准备演示给XMYZ信息组每个英雄看。于是\(N\)个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为\(1,2,\ldots,N\)。每个人的身高一开始都是不超过\(1000\)......
  • P2119 [NOIP2016 普及组] 魔法阵
    P2119[NOIP2016普及组]魔法阵传送门1我们可以先写出\(O(m^4)\)的暴力#include<bits/stdc++.h>#defineintlonglong#definePIIpair<int,int>usingnamespacestd;constintinf=0x3f3f3f3f;constintMOD=1e9+7,N=4e4+5;intn,m,ans[N......
  • 8:Python字符串的魔法属性
    test="alex"v=test.capitalize()#首字母的大写print(v)test1="alEx"v1=test1.casefold()#所有字母变小写print(v1)test2="alEx"v2=test2.center(20,"*")#设置宽度,并将内容居中,20代指总长度,*代指空白位置填充且只能填一个字符print(v2)test3="alexralexr"v3=te......
  • 掌握 IPython %%time 魔法命令:高效测量代码块执行时间
    引言在编程和数据分析中,了解代码的执行时间是优化性能的关键步骤。IPython,作为一个强大的交互式计算环境,提供了多种工具来帮助用户测量和优化代码。其中,%%time魔法命令是IPython中用来测量代码块执行时间的便捷工具。本文将详细介绍%%time魔法命令的使用方法,并通过一......
  • 探索 IPython 中的 %%javascript 魔法命令:运行 JavaScript 代码的秘籍
    引言IPython是一个强大的交互式计算环境,它不仅支持Python语言,还通过各种魔法命令扩展了其功能。其中,%%javascript魔法命令是IPython扩展中一个非常有趣的特性,它允许用户在IPython环境中直接运行JavaScript代码。这对于需要在数据科学和科学计算中使用JavaScript......
  • Python 可变长参数的魔法:灵活函数设计的秘密
    哈喽,大家好,我是木头左!什么是可变长参数?在Python中,可变长参数允许你向函数传入任意数量的参数,而无需预先定义它们的个数。这为编写更加灵活和通用的函数提供了可能。可变长参数主要有两种形式:*args用于非关键字参数,**kwargs用于关键字参数。*args:非关键字可变长参数当你......
  • 魔法学校里的https
    在魔法学校,小魔法师艾文和小女巫莉莉暗恋着对方,他们想通过魔法信件来传递情书,但是学校的魔法邮递员们(中间人)总是喜欢偷看并且篡改他们的信件,这让艾文和莉莉很苦恼。单向锁艾文发明了一个单向锁,这个锁配有一把钥匙,只有用这把钥匙才能打开锁。他把钥匙复制了一份给莉莉,这样他......