UIPackage.AddPackage("UI/Extension"); 加载Resources下的文件
GComponent _mainView; 为当前的组件
GGroup _btnGroup; 在fgui上建好的一个组,里面是多种按钮文件之类的
Stage.inst.onKeyDown.Add(OnKeyDown); 在图集上添加一个响应事件
_mainView = this.GetComponent<UIPanel>().ui; 用这种方式获得该panel中的UI界面
_btnGroup = _mainView.GetChild("g0").asGroup; 在UI界面上加一个组合的组件
_g1 = UIPackage.CreateObject("Transition", "BOSS").asCom; 创建一个组件,这里是一个动画组件,根据他的包名还有在FGUI上的组件名,因为create出来的是object类型的,所以需要装换为组件类型,这里FGUI提供了简单的.asCom
_g5.GetTransition("t0").SetHook("play_num_now", __playNum); 开始_g5上的t0动画,play_num_now是添加的一个标签,根据这个标签访问到那个帧,并使用__playNum函数去修改他们的值或者数据之类的,主要用于装备分数的增加等
_mainView.GetChild("btn0").onClick.Add(() => { __play(_g1); }); 为当前的"btn0"按键添加一个事件,这里用的是拉姆达表达式,一般都会用拉姆达表达式。
也可以直接这样: _mainView.GetChild("btn3").onClick.Add(__play4);
void __play(GComponent target)
{
_btnGroup.visible = false; //可见变为false
GRoot.inst.AddChild(target); //给组件列表加子组件
Transition t = target.GetTransition("t0");
//play(int times,int delay,PlayCompleteCallback onComplete) times,为该动画的播放次数,delay,循环多少次,complete为方法后的响应
t.Play(() =>
{
_btnGroup.visible = true;
GRoot.inst.RemoveChild(target);//将子组件从组建列表中移除
});
}
使用dotween来对动画中的数据进行修改。
GTween.To(_startValue, _endValue, 0.3f).SetEase(EaseType.Linear)
.OnUpdate((GTweener tweener) => { _g5.GetChild("value").text = "" + Mathf.Floor(tweener.value.x); });
SetEase(EaseType.Linear)为将数据能实现一个一个的加的过度效果。
进行界面的加载
IEnumerator DoLoad(string sceneName)
{
GRoot.inst.AddChild(_cutSceneView);
GProgressBar pb = _cutSceneView.GetChild("pb").asProgress;
pb.value = 0;
#if UNITY_5_3_OR_NEWER
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
#else
AsyncOperation op = Application.LoadLevelAsync(sceneName);
#endif
float startTime = Time.time;
while (!op.isDone || pb.value != 100)
{
int value = (int)((Time.time - startTime) * 100f / 3f);
if (value > 100)
value = 100;
pb.value = value;
yield return null;
}
GRoot.inst.RemoveChild(_cutSceneView);
GRoot.inst.AddChild(_mainView);
}