同樣是關於其中一段代碼的理解:
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是一種緩動方式