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);
        });
    }
}

三、最终运行效果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46649692/article/details/117076026
今日推荐