using FairyGUI; using UI.Launcher; using UnityEngine; namespace GFGGame { public class LauncherView { private static LauncherView m_Instance = null; /// /// 单例 /// public static LauncherView Instance { get { if (m_Instance == null) { m_Instance = new LauncherView(); } return m_Instance; } } private UI_LauncherUI _ui; private GameObject _gameObject; private GoWrapper _wrapper; /// /// 每1%耗时,单位秒 /// private const float SPEED = 0.01f; /// /// 界面是否打开状态 /// private bool isOpen = false; /// /// FairyGUI包名 /// private string _packageName; #region private private void Dispose() { UIPackage.RemovePackage("UI/" + _packageName); _ui.Dispose(true); _ui = null; if (_gameObject != null) { GameObject.Destroy(_gameObject); } } #endregion public LauncherView() { _packageName = UI_LauncherUI.PACKAGE_NAME; UIPackage.AddPackage("UI/" + _packageName + "/" + _packageName); _ui = UI_LauncherUI.Create(); _ui.target.MakeFullScreen(); _ui.target.AddRelation(GRoot.inst, RelationType.Size); _ui.m_txtVersion.text = Application.version; string resPath = "Effect/ui_dljm/ui_dljm_jdt_tw"; var prefab = Resources.Load(resPath); _gameObject = GameObject.Instantiate(prefab); var assetDisposer = _gameObject.AddComponent(); assetDisposer.resPath = resPath; _gameObject.transform.localScale = new Vector3(100, 100, 100); _wrapper = new GoWrapper(_gameObject); _ui.m_holder.SetNativeObject(_wrapper); } /// /// 设置版本号文字 /// /// public void SetVersion(string version) { if (!isOpen) { return; } _ui.m_txtVersion.text = version; } /// /// 设置描述文字 /// /// public void SetDesc(string desc, string descRight = "") { if (!isOpen) { return; } string str = string.Format("{0} {1}", desc, descRight);// + descRight; _ui.m_txtDescLeft.text = str; // _ui.m_txtDescLeft.text = desc ?? ""; // _ui.m_txtDescRight.text = descRight ?? ""; } /// /// 设置进度0-100 /// /// /// public void SetProgress(long progress, GTweenCallback callback = null) { if (!isOpen) { return; } GTweener twener = GTween.GetTween(_ui.m_progressBar1, TweenPropType.Progress); if (twener != null) { twener.Kill(true); } if (progress < _ui.m_progressBar1.value) { _ui.m_progressBar1.value = progress; _ui.m_imgAni.x = _ui.m_progressBar1.width * (progress / 100) - 120; callback?.Invoke(); } else { float duration = (float)(progress - _ui.m_progressBar1.value) * SPEED; GTweener gtweener = _ui.m_progressBar1.TweenValue(progress, duration).OnUpdate((GTweener t) => { _ui.m_imgAni.x = _ui.m_progressBar1.width * (t.value.x / 100) - 120; }); if (callback != null) { gtweener.OnComplete(callback); } } } /// /// 打开界面 /// public void Open() { if (isOpen) { return; } _ui.m_progressBar1.value = 0; _ui.m_txtDescLeft.text = ""; _ui.m_txtDescRight.text = ""; GRoot.inst.AddChild(_ui.target); isOpen = true; _ui.m_imgLogo.visible = LauncherConfig.netType != LauncherConfig.EnumNetType.TEMP; } /// /// 关闭界面 /// /// public void Close(bool toDestroy = false) { if (!isOpen) { return; } isOpen = false; _ui.target.RemoveFromParent(); if (toDestroy) { Dispose(); } } } }