FairyGUI按钮动效的混用

FairyGUI按钮动效的混用

一、FGUI中的设计

(一)导入素材资源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原本还有一个音乐素材,导不进来,大家可以自己网上找个类似的背景音乐自行导入。

(二)详细设计
1、新建按钮并对其做一些微调

在这里插入图片描述
微调的目的是给按钮一些特效,比如点击时有一个缩放效果,并且有一个音效。
在这里插入图片描述

2、按钮拖入Component1中并新建一个文本
将文本与按钮做一个关联,防止后续操作过程中出现一些问题。

在这里插入图片描述

3、制作特效

(1)新建组件
在这里插入图片描述
在这里插入图片描述
(2)特效制作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、打包导入Unity

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Unity中的代码实现

1、手动显示按钮

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、脚本代码控制

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class ButtonEffects : MonoBehaviour
{
    private GComponent mainUI;
    private GComponent bossCom;
    void Start()
    {
        mainUI = GetComponent<UIPanel>().ui;
        bossCom = UIPackage.CreateObject("Package1", "Boss").asCom;
        mainUI.GetChild("n0").onClick.Add(() => { PlayUI(bossCom); });  //n0是FGUI中的Button1。Add()里面是λ表达式

    }

    // Update is called once per frame
    void Update()
    {
        
    }
    private void PlayUI(GComponent targetCom)
    {
        mainUI.GetChild("n0").visible = false;
        GRoot.inst.AddChild(targetCom);
        Transition t = targetCom.GetTransition("t0");  //t0是Boss的动效
        t.Play(()=>
        {
            mainUI.GetChild("n0").visible = true;
            GRoot.inst.RemoveChild(targetCom);
        });
    }
}

在这里插入图片描述
运行效果:
在这里插入图片描述美中不足的是:点击后,这个字体“Boss”并不能消失。这时就需要用到FairyGUI里面的组。

3、创建组重新发布

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、对代码做一些更改
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class ButtonEffects : MonoBehaviour
{
    private GComponent mainUI;
    private GComponent bossCom;
    private GGroup group;
    void Start()
    {
        mainUI = GetComponent<UIPanel>().ui;
        group = mainUI.GetChild("n2").asGroup;
        bossCom = UIPackage.CreateObject("Package1", "Boss").asCom;
        mainUI.GetChild("n0").onClick.Add(() => { PlayUI(bossCom); });  
        //n0是FGUI中的Button1。Add()里面是λ表达式

    }

    // Update is called once per frame
    void Update()
    {
        
    }
    private void PlayUI(GComponent targetCom)
    {
        //mainUI.GetChild("n0").visible = false;
        group.visible = false;
        GRoot.inst.AddChild(targetCom);
        Transition t = targetCom.GetTransition("t0");  //t0是Boss的动效
        t.Play(()=>
        {
            //mainUI.GetChild("n0").visible = true;
            group.visible = true;
            GRoot.inst.RemoveChild(targetCom);
        });
    }
}

三、最终运行效果

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值