当前位置: 首页 > news >正文

建网站服务器用什么帮人做钓鱼网站的人

建网站服务器用什么,帮人做钓鱼网站的人,做音乐网站曲库在哪找,聊城做网站推广公司有一天一个小伙伴跟我说#xff0c;对于按钮相关网络某些教程并不全面#xff0c;我大致看了#xff0c;几乎差不多#xff0c;接下来就大致补充一点代码相关的知识点了#xff0c;还有我日常开发常用的一些按钮相关代码知识。 目录 1.UGUI的普通按钮相关 2.UGUI的异型…有一天一个小伙伴跟我说对于按钮相关网络某些教程并不全面我大致看了几乎差不多接下来就大致补充一点代码相关的知识点了还有我日常开发常用的一些按钮相关代码知识。 目录 1.UGUI的普通按钮相关 2.UGUI的异型按钮相关 3.NGUI按钮相关需要下载导入NGUI 4.UI基础框架相关UGUI 5.UGUI框架的使用--制作一个简易的提示管理器 打码比较快如果有小错误请指正可能是误写感谢 1.UGUI的普通按钮相关 代码控制相关的按钮参数 Button btnthis.GetComponentButton(); //按钮相关的参数可以被点出来使用 btn.interactabletrue; 通过点击事件拖拽脚本检测按钮在脚本中写上代码然后把按钮事件拖拽到相应的按钮之下 public void ClickBtn() { //中间写上按钮逻辑 } 通过代码直接添加通过代码添加的方式是我最经常使用的你可以在场景中直接拖拽代码也可以脚本控制查找对应的按钮 1.拖拽结合lambda表达式的形式 //直接拖拽按钮 public Button btnClose; //一般在Start函数之中添加 btnClose.onClick.AddListener(() { //结合lambda表达式的代码逻辑 }); 2.拖拽 //以下代码在Start函数之中写入 btn.onClick.AddListener(ClickBtn);//以下写入按钮逻辑 private void ClickBtn() { //写入按钮点击逻辑 } 3.代码识别 代码识别就可以直接使用private,然后代码查找按钮按钮不能是未被显示的 GameObject.Find(btnClose); 其他的如上图所示。 4.按钮代码移出委托 btn.onClick.RemoveListener(ClickBtn); //移出全部的 btn.onClick.RemoveAllListener(); 2.UGUI的异型按钮相关 异形按钮就不是方方正正的按钮是各种各样形状的。 方法一拼凑法 通过多个透明图片拼凑出一个异形按钮用于射线检测。 方式二代码相关 第一步修改图片参数开启Read/Write Enabled开关 第二步通过代码修改图片的相应阙值当alpha值小于该值就不会被射线检测了 img.alphaHitTestMinimumThreshold0.1f;(外部关联image) 3.NGUI按钮相关需要下载导入NGUI 制作NGUI按钮一个Sprite(需要文字的话就再添加一个label子对象为其添加Button脚本添加碰撞器。 代码获取对象 public UIButton btn; btn.onClick.Add(new EventDelegate(Click1)); //使用lambda表达式做处理 btn.onClick.Add(new EventDelegate(() { //中间写上逻辑 })); 4.UI基础框架相关UGUI 1.基本的面板框架可以实现面板预设体的淡入淡出 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;/// summary /// 面板基类 /// /summary public class BasePanel : MonoBehaviour {//整体控制淡入淡出的画布组件private CanvasGroup canvasGroup;//淡入淡出的速度public float alphaSpeed 8;//是否一开始要显示private bool isShow;private Dictionarystring,ListUIBehaviour controlDic new Dictionarystring,ListUIBehaviour();// Start is called before the first frame updateprotected virtual void Awake(){FindChildrenControlButton();FindChildrenControlText();FindChildrenControlImage();FindChildrenControlToggle();FindChildrenControlSlider();FindChildrenControlScrollRect();FindChildrenControlInputField();canvasGroup this.GetComponentCanvasGroup();if (canvasGroup null)canvasGroup this.gameObject.AddComponentCanvasGroup();}/// summary/// 显示自己/// /summarypublic virtual void ShowMe(object[] o null){isShow true;canvasGroup.alpha 0;}/// summary/// 隐藏自己/// /summarypublic virtual void HideMe(){isShow false;canvasGroup.alpha 1;}/// summary/// 按钮点击/// /summary/// param namebtnName/paramprotected virtual void OnClick(string btnName){}/// summary/// 勾选框触发/// /summary/// param nametoggleName/param/// param namevalue/paramprotected virtual void OnValueChanged(string toggleName,bool value){}// Update is called once per framepublic virtual void Update(){if ((canvasGroup null)){return;}//淡入if (isShow canvasGroup.alpha ! 1){canvasGroup.alpha alphaSpeed * Time.deltaTime;if (canvasGroup.alpha 1)canvasGroup.alpha 1;}//淡出else if (!isShow){canvasGroup.alpha - alphaSpeed * Time.deltaTime;if (canvasGroup.alpha 0){canvasGroup.alpha 0;// hideCallBack?.Invoke();}}}/// summary/// 得到对应名字的对应控件脚本/// /summary/// typeparam nameT/typeparam/// param namecontrolName/param/// returns/returnsprotected T GetControlT(string controlName)where T:UIBehaviour{if(controlDic.ContainsKey(controlName)){for(int i 0; i controlDic[controlName].Count;i){if (controlDic[controlName][i] is T)return controlDic[controlName][i] as T;}}return null;}private void FindChildrenControlT() where T:UIBehaviour{T[] controls this.GetComponentsInChildrenT();for(int i0;icontrols.Length;i){string objName controls[i].gameObject.name;if (controlDic.ContainsKey(objName))controlDic[objName].Add(controls[i]);elsecontrolDic.Add(objName, new ListUIBehaviour() { controls[i] });//如果是按钮控件if (controls[i] is Button){(controls[i] as Button).onClick.AddListener(() {OnClick(objName);});}//如果是单选框或者多选框else if (controls[i] is Toggle){(controls[i] as Toggle).onValueChanged.AddListener((value) {OnValueChanged(objName, value);});}}} }2.UIManager using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems;/// summary /// UI层级 /// /summary public enum E_UI_Layer {Bot,Mid,Top,System, }/// summary /// UI管理器 /// 1.管理所有显示的面板 /// 2.提供给外部 显示和隐藏等等接口 /// /summary public class UIManager : BaseManagerUIManager {public Dictionarystring, BasePanel panelDic new Dictionarystring, BasePanel();private Transform bot;private Transform mid;private Transform top;private Transform system;//记录我们UI的Canvas父对象 方便以后外部可能会使用它public RectTransform canvas;public UIManager(){//创建Canvas 让其过场景的时候 不被移除GameObject obj ResMgr.GetInstance().LoadGameObject(UI/Canvas);canvas obj.transform as RectTransform;GameObject.DontDestroyOnLoad(obj);//找到各层bot canvas.Find(Bot);mid canvas.Find(Mid);top canvas.Find(Top);system canvas.Find(System);//创建EventSystem 让其过场景的时候 不被移除obj ResMgr.GetInstance().LoadGameObject(UI/EventSystem);GameObject.DontDestroyOnLoad(obj);}/// summary/// 通过层级枚举 得到对应层级的父对象/// /summary/// param namelayer/param/// returns/returnspublic Transform GetLayerFather(E_UI_Layer layer){switch(layer){case E_UI_Layer.Bot:return this.bot;case E_UI_Layer.Mid:return this.mid;case E_UI_Layer.Top:return this.top;case E_UI_Layer.System:return this.system;}return null;}/// summary/// 显示面板/// /summary/// typeparam nameT面板脚本类型/typeparam/// param namepanelName面板名/param/// param namelayer显示在哪一层/param/// param namecallBack当面板预设体创建成功后 你想做的事/parampublic void ShowPanelT(string panelName, E_UI_Layer layer E_UI_Layer.Mid, UnityActionT callBack null) where T:BasePanel{if (panelDic.ContainsKey(panelName)){panelDic[panelName].ShowMe();// 处理面板创建完成后的逻辑if (callBack ! null)callBack(panelDic[panelName] as T);//避免面板重复加载 如果存在该面板 即直接显示 调用回调函数后 直接return 不再处理后面的异步加载逻辑return;}ResMgr.GetInstance().LoadAsyncGameObject(UI/ panelName, (obj) {//把他作为 Canvas的子对象//并且 要设置它的相对位置//找到父对象 你到底显示在哪一层Transform father bot;switch(layer){case E_UI_Layer.Mid:father mid;break;case E_UI_Layer.Top:father top;break;case E_UI_Layer.System:father system;break;}//设置父对象 设置相对位置和大小obj.transform.SetParent(father);obj.transform.localPosition Vector3.zero;obj.transform.localScale Vector3.one;(obj.transform as RectTransform).offsetMax Vector2.zero;(obj.transform as RectTransform).offsetMin Vector2.zero;//得到预设体身上的面板脚本T panel obj.GetComponentT();// 处理面板创建完成后的逻辑if (callBack ! null)callBack(panel);panel.ShowMe();if (!panelDic.ContainsKey(panelName)){//把面板存起来panelDic.Add(panelName, panel);}});}/// summary/// 隐藏面板/// /summary/// param namepanelName/parampublic void HidePanel(string panelName){if(panelDic.ContainsKey(panelName)){panelDic[panelName].HideMe();GameObject.Destroy(panelDic[panelName].gameObject);panelDic.Remove(panelName);}}/// summary/// 得到某一个已经显示的面板 方便外部使用/// /summarypublic T GetPanelT(string name) where T:BasePanel{if (panelDic.ContainsKey(name))return panelDic[name] as T;return null;}/// summary/// 给控件添加自定义事件监听/// /summary/// param namecontrol控件对象/param/// param nametype事件类型/param/// param namecallBack事件的响应函数/parampublic static void AddCustomEventListener(UIBehaviour control, EventTriggerType type, UnityActionBaseEventData callBack){EventTrigger trigger control.GetComponentEventTrigger();if (trigger null)trigger control.gameObject.AddComponentEventTrigger();EventTrigger.Entry entry new EventTrigger.Entry();entry.eventID type;entry.callback.AddListener(callBack);trigger.triggers.Add(entry);}}3.单例模式基类 using System.Collections; using System.Collections.Generic; using UnityEngine;/// summary /// 单例模式基类 /// /summary public class BaseManagerT where T:new() {private static T instance;public static T GetInstance(){if (instance null)instance new T();return instance;} } 5.UGUI框架的使用--制作一个简易的提示管理器 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Threading;public class TipMgr : BaseManagerTipMgr {public TipMgr(){}/// summary/// 用于提供给外界修改标签具体内容以及触发条件的方法/// /summary/// param nameifShowChoose是否存在选项/param/// param nametestContent标签的显示信息/param/// param nametipState标签状态/parampublic void ChangeTest(bool ifShowChoose, string testContent,TipState tipState){ProtectHide(BigTip,TipPanel);UIManager.GetInstance().ShowPanelTipPanel(TipPanel,E_UI_Layer.System, (panel) {panel.ChangeTest(ifShowChoose,testContent,tipState);});}/// summary/// 提供给外界轻松触发气泡并且修改单条气泡内容的方法/// /summary/// param nametestContent气泡内容/param/// param nametransPos气泡触发位置/parampublic void ChangeBubbleTest(string testContent, Transform transPos){ProtectHide(TipPao,BubbleTip);UIManager.GetInstance().ShowPanelBubbleTip(BubbleTip,E_UI_Layer.Mid, (item) {item.ChangeBubble(testContent,transPos);});}/// summary/// 提供给外界轻松触发多条气泡内容修改的方法/// /summary/// param nametransPos/param/// param nametestContent/parampublic void AddChangeBubbleTest( Transform transPos,params string[] testContent){ProtectHide(TipPao,BubbleTip);UIManager.GetInstance().ShowPanelBubbleTip(BubbleTip,E_UI_Layer.Mid, (item) { item.AddChangeBubble(transPos,testContent);});}/// summary/// 提供给外界用于修改提示内容的方法/// /summary/// param nameTipName/parampublic void ChangeTipPic(string TipName){ProtectHide(TipPic,PicTipPanel);UIManager.GetInstance().ShowPanelPicTipPanel(PicTipPanel,E_UI_Layer.Mid, (panel) {panel.picName TipName;});}public void ProtectHide(string panelTag,string panelName){if(GameObject.FindGameObjectWithTag(panelTag))UIManager.GetInstance().HidePanel(panelName);}}里面的名字是我随便起的请不要介意你可以自行修改因为打小比赛几乎只有我个人写程序所以就随意起名了 对于提示面板 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.InputSystem;public enum TipState {None,//默认无提示CompassInteraction,//罗盘交互提示SmallHoles,//小洞附近提示Clock,//钟表附近,找到齿轮 } public class TipPanel : BasePanel {public bool IsShowChoose true;public TipState TipStates TipState.None;/// summary/// 用于修改提示内容/// /summary/// param nameisShowChoose是否存在提示选项/param/// param nametxtTip修改提示内容/param/// param nametipState提示触发的状态/parampublic void ChangeTest(bool isShowChoose, string txtTip,TipState tipState){if (!isShowChoose){GetControlButton(BtnYes).gameObject.SetActive(false);GetControlButton(BtnNo).gameObject.SetActive(false);IsShowChoose false;Invoke(HideMe,5f);}GetControlText(txtTip).text txtTip;TipStates tipState;}private void Start(){if (IsShowChoose){//点击是GetControlButton(BtnYes).onClick.AddListener(() {switch (TipStates){case TipState.None:break;case TipState.CompassInteraction://播放献祭动画break;}//隐藏自己UIManager.GetInstance().HidePanel(TipPanel);});//点击不GetControlButton(BtnNo).onClick.AddListener(() {switch (TipStates){case TipState.None:break;case TipState.CompassInteraction:TipMgr.GetInstance().ChangeBubbleTest(我知道你是我最正确的选择,PlayerController.GetInstance().transformPos.transform);break;}//隐藏自己UIManager.GetInstance().HidePanel(TipPanel);});}} }对于小气泡组件 using System; using System.Collections; using System.Collections.Generic; using System.Threading; using UnityEngine; using UnityEngine.UI;/// summary /// 人物对话气泡 /// /summary public class BubbleTip : BasePanel {[SerializeField] public string[] content;[SerializeField]private int _num 1;/// summary/// 提供给外界用于修改单个气泡内容的方法/// /summary/// param nametestBubble气泡内容/param/// param namebubbletransform气泡位置/parampublic void ChangeBubble(string testBubble,Transform bubbletransform){transform.position Camera.main.WorldToScreenPoint(bubbletransform.position);GetControlText(txtBubble).text testBubble;Invoke(HideMe,2);}/// summary/// 提供给外界用于修改多个气泡内容的方法/// /summary/// param namebubbletransform气泡出现的位置/param/// param nametestContent多条内容/parampublic void AddChangeBubble(Transform bubbletransform,params string[] testContent){this.transform.position Camera.main.WorldToScreenPoint(bubbletransform.position);content testContent;GetControlText(txtBubble).text testContent[0];Invoke(InvokeP,2);Invoke(HideMe,(testContent.Length1)*2);}public void InvokeP(){GetControlText(txtBubble).text content[_num ];_num 1;if (_numcontent.Length)Invoke(InvokeP,2);}public override void HideMe(){base.HideMe();_num 0;} }以上使用了Json管理器源码未提供。以上UI部分是比赛的项目源码所以夹杂一些东西。通过了多次测试几乎没有问题可以放心使用。气泡位置不是实时更新所以不会跟随如果你有需要可以大致修改一下代码。代码主要介绍UGUI的框架使用源码也不完整因为需求被砍了一大半。 以上就是UI按钮代码相关的常见代码了喜欢就请点赞收藏。感谢
http://www.zqtcl.cn/news/822/

相关文章:

  • 网站为契机建设校园数字化网页设计实训报告3篇
  • 长沙做网站的包吃包住4000求婚策划公司
  • 深圳市建设混凝土投标网站js 捕获网站异常插件
  • 商城移动端网站开发烟台网页制作
  • 网站建设与管理学什么软件平台架构
  • 网站建设电话销售模版入侵wordpress
  • 企业站seo点击软件企业官方网站建设的作用
  • 专业做网站排名的人重庆博达建设集团股份有限公司网站
  • 西宁网站制作多少钱幕墙设计师培训
  • 中国建设银行人才招聘官方网站手机版wordpress使用
  • 深圳做物流网站嘉兴网站建设技术托管
  • 工业网站模板wordpress文字围绕图片
  • 网站用自己的电脑做服务器吗做室内设计的网站有哪些内容
  • 东莞市传送机技术支持 网站建设最专业汽车网站建设
  • 天津做一个简单的网站首页江门seo网站
  • 做网站跟桌面程序差别大吗潍坊电商网站建设
  • 网站建设app小程序开发网站如何做快捷支付
  • 合肥外贸网站推广建筑工程分包平台
  • 金华网站制作费用佛山网络推广电话
  • 做网站能注册账号的县门户网站建设整改
  • 网站备案流程及步骤辽阳免费网站建设公司
  • 上海加强旅游住宿业与商业场所南宁快速优化排名
  • 企业百度网站怎么做湖南响应式网站建设费用
  • 聊城网站建设电话可以做动漫网站的源码源码
  • mv网站源码网络空间安全考研
  • 建设企业网站的哪家好微信小程序开通流程
  • 绥化市住房和城乡建设网网站聚名网实名认证
  • 天津seo公司网站海报设计网站免费
  • 宁波网站设计价格北京微信网站建设费用
  • 宜昌网站建设设计自学做网站