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 { private List LoadClassName = new List() { "ImageLoader" , "Global" };//写入需要全局自动实例化的类 public Button retbutton; public GameObject ClosureObj; public static GameObject GlobalObj; private void Awake() { 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(); } /// /// 判断必须为小数而且大于0 /// public bool IsGreaterThanZeroDecimal(string text) { // 使用正则表达式匹配大于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 (gameObject != null) { if (my_gameObject != null) { Destroy(my_gameObject); return; } Destroy(gameObject); } } /// /// 给按钮绑定点击动画 /// /// public void AddingAButtonEvent(Button button) { if (button != null) { button.onClick.AddListener(() => ButtonClickAnimationAsync(button.gameObject)); } else { Debug.Log("未找到按钮"); } } }