同样是关于其中一段代码的理解:
using UnityEngine;
using FairyGUI;
using DG.Tweening;
public class FairyGUIText2 : MonoBehaviour
{
private GComponent mainUI;
private GComponent addPower;
private float startValue;
private float endValue;
// Start is called before the first frame update
void Start()
{
mainUI = GetComponent<UIPanel>().ui;
addPower = UIPackage.CreateObject("Package3", "AddPowerCom").asCom;
mainUI.GetChild("Button").onClick.Add(() => { onClick(addPower); });
addPower.GetTransition("t0").SetHook("Add", AddSlowly);
}
// Update is called once per frame
void Update()
{
}
void AddSlowly()
{
DOTween.To(() => startValue, x => { addPower.GetChild("PowerText").text = Mathf.Floor(x).ToString(); }, endValue, 0.3f).SetEase(Ease.Linear);
}
void onClick(GComponent gComponent)
{
mainUI.GetChild("Button").visible = false;
GRoot.inst.AddChild(gComponent);
Transition t = gComponent.GetTransition("t0");
startValue = 10000;
int add = Random.Range(1000, 3000);
endValue = startValue + add;
addPower.GetChild("PowerText").text = startValue.ToString();
addPower.GetChild("AddPowerText").text = "+" + add;
t.Play(() =>
{
mainUI.GetChild("Button").visible = true;
GRoot.inst.RemoveChild(gComponent);
});
}
}
首先是
addPower.GetTransition("t0").SetHook("Add", AddSlowly);
这个是触发addPower组件上的t0动效的Add标签用的,只要播放到了该标签所在帧,就会触发AddSlowly方法
DOTween.To(() => startValue, x => { addPower.GetChild("PowerText").text = Mathf.Floor(x).ToString(); }, endValue, 0.3f).SetEase(Ease.Linear);
缓动方法,startValue表示组件的text开始的值,endValue表示结束的值,0.3f表示缓动时间,x表示程序计算出的在0.3f时间前提下每帧需要改变的值,然后将它赋给text属性,因为是一个float类型的值且我们希望text显示为整数,所以对它进行了Floor和ToString处理,setEase是设置缓动方式的函数,Ease.Linear是一种缓动方式