using DG.Tweening; using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Threading.Tasks; using UnityEngine; using UnityEngine.UI; public class Base : MonoBehaviour { [HideInInspector] public string description = ""; private List LoadClassName = new List() { "gameGlobal" };//写入需要全局自动实例化的类 // [Header("关闭窗口的按钮")] public Button retbutton; // [Header("需要关闭的窗口")] public GameObject ClosureObj; public static GameObject GlobalObj; /// ///初始化 /// private void Awake() { if (Application.isPlaying) { Application.targetFrameRate = Mathf.RoundToInt(55f); // 设置目标帧率 initializeGlobal(); // if (retbutton != null) // { // retbutton.onClick.AddListener(() => CancelOnClick(retbutton, ClosureObj)); // } } } /// /// 初始化全局类 /// private void initializeGlobal() { if (GlobalObj == null) { GlobalObj = new GameObject("GlobalObj"); DontDestroyOnLoad(GlobalObj); foreach (string className in LoadClassName) { CallClassByString(className); } } } /// /// 用于通过类名字符串动态调用类和方法 /// /// public void CallClassByString(string className) { // 获取类的 Type 对象 Type type = Type.GetType(className); if (type != null) { GlobalObj.AddComponent(type); } else { Console.WriteLine("Class not found."); } } /// /// 按钮动画,点击后会放大缩小 /// /// 实施目标对象 /// 放大倍率 /// 动画持续时间倍率 /// public async Task ButtonClickAnimationAsync(GameObject button,float max=1.25f,float timemultiple = 1)//按钮动画 { TaskCompletionSource tcs = new TaskCompletionSource(); Sequence mySequence = DOTween.Sequence(); mySequence.Append(button.transform.DOScale(max, 0.1f* timemultiple)) // 第一个动画 .Append(button.transform.DOScale(1f, 0.2f* timemultiple)).OnComplete(() => { // 动画播放完成后执行的代码 tcs.SetResult(true); }); // 第二个动画 await tcs.Task; } /// /// 添加通用上移弹窗 /// /// /// public void addEventPopUp(string Details,float time = 5f)//添加弹窗 { GameObject prefab = Resources.Load("base/EventPopUp"); prefab.GetComponent().time = time; Canvas canvas = GetComponentInParent(); prefab.GetComponent().text = Details; Instantiate(prefab, canvas.transform); } //logoPanel.ServerResponse TestserverResponse; //protected Dictionary testhead; //public async void testLogo()//测试登录 //{ // LoginAndGetToken.loginbody body = new LoginAndGetToken.loginbody // { // userName = "15151658596", // password = "123456", // verifyCode = 111111 // }; // string loginResponse = await web.SendRequest(web.URL + "/snail/user/login", "POST", JsonUtility.ToJson(body)); // logoPanel.ServerResponse response = JsonUtility.FromJson(loginResponse); // if (response != null && response.code == 200 && response.data != null) // { // TestserverResponse = response; // addEventPopUp("测试登录成功"); // testhead = new Dictionary // { // { "Authorization", TestserverResponse.data.token } // }; // return; // } // addEventPopUp(response.message); // testhead = new Dictionary(); //} /// /// 判读是否为小数,并且必须大于零 /// /// 判断的字符串 /// public bool IsGreaterThanZeroDecimal(string text)//判断必须为小数而且大于0 { // 使用正则表达式匹配大于0的小数 string pattern = @"^(?!0(\.0+)?$)(\d+(\.\d+)?|\.\d+)$"; Regex regex = new Regex(pattern); return regex.IsMatch(text); } /// /// 点击后关闭界面 /// /// /// public async void CancelOnClick(Button button,GameObject my_gameObject = null)//取消按钮 { await ButtonClickAnimationAsync(button.gameObject); if (my_gameObject != null) { Destroy(my_gameObject); return; } Destroy(gameObject); } }