Unity UIButton切换相应的UI页面动态加载
来源:互联网 发布:java编程输出金字塔 编辑:程序博客网 时间:2024/04/29 04:33
大家好!我是小唐,很多人都做游戏过程中会遇到一些比如说运营活动,有好多活动,点击每个Button的时候切换相对应的页面,我这里自己写的一个方法,思路是第一遍登录的时候检测点击哪个Button就实例化哪个页面,并相对应的加入集合中,这样下次再打开这个页面的时候直接从集合中激活该页面就可以了,就不用在实例化了。下面上代码:
using UnityEngine;using System.Collections;using System.Collections.Generic;public class Test : MonoBehaviour { //Button相对应页面的Prefab GameObject mButton1Page; GameObject mButton2Page; GameObject mButton3Page; GameObject mButton4Page; GameObject mButton5Page; //所有Page页面的父节点 GameObject mPageParent; GameObject mPagePrefab; //存放所有页面的集合 List<GameObject> mObjPageList = new List<GameObject>(); /// <summary> /// 点击Button调用的方法 /// </summary> /// <param name="_id">点击Button的id</param> void OnClickButton(int _id) { //为了测试id这里我直接用数字表示了,这里条件不唯一,只要能区分出你点击的Button就Ok if (_id==1) { OpenPage<PageUI1>("Page1", ref mButton1Page); } else if (_id==2) {<span style="white-space:pre"></span> OpenPage<PageUI2>("Page2", ref mButton2Page); } else if (_id == 3) { OpenPage<PageUI3>("Page3", ref mButton3Page); } else if (_id == 4) { OpenPage<PageUI4>("Page4", ref mButton4Page); } else if (_id == 5) { OpenPage<PageUI5>("Page5", ref mButton5Page); } } /// <summary> /// 打开页面 /// </summary> /// <typeparam name="T">泛型T(这里是实例化页面附加的脚本)</typeparam> /// <param name="_resources">页面Prefab的Name</param> /// <param name="_obj">要打开的页面</param> /// <returns></returns> GameObject OpenPage<T>(string _resources, ref GameObject _obj) where T : Component { //判断如果要打开的页面不存在则实例化该页面,反之则激活该页面 if (_obj == null) { mPagePrefab = Resources.Load("UI/UIData/" + _resources) as GameObject; _obj = Instantiate(mPagePrefab) as GameObject; _obj.transform.parent = mPageParent.transform; _obj.name = _resources; _obj.transform.localPosition = Vector3.zero; _obj.transform.localScale = Vector3.one;//获取脚本 T t = _obj.gameObject.GetComponent<T>(); if (t == null) { t = _obj.gameObject.AddComponent<T>(); } if (!mObjPageList.Contains(_obj)) { mObjPageList.Add(_obj); SetPageState(_obj); } } else { SetPageState(_obj); } return _obj; } /// <summary> /// 激活关闭页面 /// </summary> /// <param name="_obj"></param> void SetPageState(GameObject _obj) { for (int i = 0; i < mObjPageList.Count; i++) { if (mObjPageList[i].name == _obj.name) { mObjPageList[i].SetActive(true); } else { mObjPageList[i].SetActive(false); } } }}
0 0
- Unity UIButton切换相应的UI页面动态加载
- FragmentTabHost切换Fragment时避免重复加载UI,导致切换后重绘页面的问题解决
- unity基础开发----Unity3D的uniSWF插件动态加载SWF UI资源
- 优化UI体验:程序启动、页面切换、数据加载、UI响应
- Unity 动态加载Prefabs的作用
- Unity中关于Grid的动态加载
- Unity动态加载文本数据的方法
- Unity的动态加载AssetBundle资源笔记。
- unity动态加载Animator的Controller
- unity中资源动态加载的方式
- 动态切换不同的图片加载框架
- Element-UI的表格动态加载数据
- IOS--UI--UIButton的使用
- Unity动态加载LightMap
- Unity 动态加载dll
- Unity 动态加载物体
- unity场景切换异步加载
- angularjs 首次加载页面 及页面切换的动画
- 【codevs1052】地鼠游戏,标签不都是对的
- 因果图_测试基础
- 白话数字签名(番外篇)——签名EXE文件(上下)
- tomcat启动后卡死
- 判断素数的个数的小程序
- Unity UIButton切换相应的UI页面动态加载
- C++ 单链表操作
- c语言实现模拟发送报文
- 有关于数据类型的小例子
- 工作态度决定工作的一切
- 正则表达式语法(其中转义字符错了“/”应改为“\”)
- C++ STL学习笔记一
- JAVA NIO之浅谈内存映射文件原理与DirectMemory
- C++ STL学习笔记二 vector向量容器