【2d游戏开发】unity实现UI框架搭建
前言
前面一直比较忙,然后到现在才继续接游戏的文章,那么本次将带大家去搭建一个ui框架,同样,需要更具体的教学,可以到b站搜索本人的关于2d游戏开发-unity实现
xxx的系列视频.
步骤
其实大致的步骤只有两步,一步是把界面做出来,一部分就是使用代码编写通过按键显示和隐藏,并且能够切换不同的ui界面。
新建空物体,在该空物体下新建面板(这一步主要为了能够更容易查找到物体)
在该空物体鼠标右键,新建面板
在属性窗口换成自己的游戏素材
点击颜色调整不透明度
就可以看到界面的样式为这样
然后在面板下新建一个text,调整位置和编写文本内容
重复上诉动作,建立你需要的属性面板
如我这个
然后将one和two、three、four、five给设置不激活
最后就是代码了
在Canvas挂载自己写的c#脚本
切换ui界面代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class UISystem : MonoBehaviour
{// 获取ui系统private Transform uISystem;// 定义面板值private int Panelvalue = 0;void Start(){uISystem = GetComponent<Transform>();}// Update is called once per framevoid Update(){showUI();}void showUI() {// 左切换if (Input.GetKeyDown(KeyCode.Q)) {switch (Panelvalue) {case 0:uISystem.GetChild(0).gameObject.SetActive(false);uISystem.GetChild(5).gameObject.SetActive(true);Panelvalue = 5;break;case 1:uISystem.GetChild(1).gameObject.SetActive(false);uISystem.GetChild(0).gameObject.SetActive(true);Panelvalue = 0;break;case 2:uISystem.GetChild(2).gameObject.SetActive(false);uISystem.GetChild(1).gameObject.SetActive(true);Panelvalue = 1;break;case 3:uISystem.GetChild(3).gameObject.SetActive(false);uISystem.GetChild(2).gameObject.SetActive(true);Panelvalue = 2;break;case 4:uISystem.GetChild(4).gameObject.SetActive(false);uISystem.GetChild(3).gameObject.SetActive(true);Panelvalue = 3;break;case 5:uISystem.GetChild(5).gameObject.SetActive(false);uISystem.GetChild(4).gameObject.SetActive(true);Panelvalue = 4;break;}}// 右切换if (Input.GetKeyDown(KeyCode.R)) {switch (Panelvalue){case 0:uISystem.GetChild(0).gameObject.SetActive(false);uISystem.GetChild(1).gameObject.SetActive(true);Panelvalue = 1;break;case 1:uISystem.GetChild(1).gameObject.SetActive(false);uISystem.GetChild(2).gameObject.SetActive(true);Panelvalue = 2;break;case 2:uISystem.GetChild(2).gameObject.SetActive(false);uISystem.GetChild(3).gameObject.SetActive(true);Panelvalue = 3;break;case 3:uISystem.GetChild(3).gameObject.SetActive(false);uISystem.GetChild(4).gameObject.SetActive(true);Panelvalue = 4;break;case 4:uISystem.GetChild(4).gameObject.SetActive(false);uISystem.GetChild(5).gameObject.SetActive(true);Panelvalue = 5;break;case 5:uISystem.GetChild(5).gameObject.SetActive(false);uISystem.GetChild(0).gameObject.SetActive(true);Panelvalue = 0;break;}}}
}
显示和隐藏ui界面代码
// 控制ui系统界面的显示private bool showUiSystem = false;// 获取ui系统预制体private GameObject uiSystemPrefab;// 获取加载后的ui系统private GameObject UISystem;//查找物体并实例化ui系统(根据Tag查找)uiSystemPrefab = Resources.Load<GameObject>("Prefabs/ui/uiSystem");Instantiate(uiSystemPrefab);UISystem = GameObject.FindGameObjectWithTag("mainUI");// 系统的打开和关闭void openAndCloseUIsystem() {if (Input.GetKeyDown(KeyCode.Escape)) {showUiSystem = !showUiSystem;// 打开和关闭系统UISystem.transform.GetChild(0).gameObject.SetActive(showUiSystem);}}
打开和显示ui的代码我是写在玩家的脚本里,然后update调用就可以
这样之后,启动游戏,按ESC键就能显示和隐藏,并且能够切换ui了
结语
以上为我实现ui框架的过程,更具体的搜索我的系列视频
【2d游戏开发】unity实现UI框架搭建相关推荐
- unity超级马里奥2d游戏开发-03瓦片地图场景搭建
大家好,我是小兵,今天给大家带来Untiy开发超级马里奥游戏的第3课,瓦片地图搭建,如果你想查看完整的教程,请访问我的个人博客geekape.net. 前两节课都没涉及具体的游戏制作,算是一个开胃菜, ...
- 【2d游戏开发】实现主角的移动,移动动画变换和奔跑加速
前言 那么这次文章,来编写关于主角的移动和奔跑功能:同样,如前面的文章所述,因编写教程写了很多遍,本文章只写出关键部分:想了解详细的教程,在b站搜索本人录制的2d游戏开发-unity实现系列视频教程 ...
- 【2d游戏开发】实现昼夜系统
前言 本次文章将编写unity如何根据时间实现昼夜系统,也因此,本文章需要依托于前面文章的时间系统功能. 同样,这里只把重要的部分编写出来,具体的实现过程请到b站搜索本人的2d游戏开发-unity实现 ...
- unity超级马里奥2d游戏开发课程-01课程介绍
大家好,我是小兵,今天给大家带来Unity开发超级马里奥2d游戏的第1课,课程介绍,你可以在我的个人博客geekape.net上找到完整的课程. 我之前主要是做前端开发工作的,并不是做游戏开发的,但由 ...
- Unity简单2D游戏开发
Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...
- Unity 2D 游戏开发解决方案大全
Unity 2D 游戏开发解决方案大全 一些官方腔 这篇文章会是一个大纲模式,致力于,为刚入坑的小白,对于一些常见的 Unity 2D 开发问题给出解决方案(啊,尤其是我) 一些方案可能并非最优解,但 ...
- Unity 2D游戏开发教程之摄像头追踪功能
Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...
- Unity 2D游戏开发教程之游戏中精灵的跳跃状态
Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...
- Unity 2D游戏开发教程之为游戏场景添加多个地面
Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...
最新文章
- 1小时学会:最简单的iOS直播推流(十)librtmp使用介绍
- 根据传入url请求,返回json字符串
- [转]CSS3 transform顺序问题
- HDU 5514 Frogs 欧拉函数
- java ee 中文乱码的问题
- 页面缓存处理的几种方法
- C++ 贪吃蛇小游戏
- double小数点后最多几位_基金理财买入后,不断亏损,是最多本金亏光,还是会出现负值...
- WinForm------TextEdit只能输入数字
- 怎么用vc采集ni卡数据_作家型INFJ的N灵感采集 | INFJ自我成长
- go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)
- VSCode 个性化配置快捷键
- Android 免root 备份数据,真正免root的完美备份详细使用教程
- 服务器性能指标图英文翻译,技术性能指标,technic performance guildline,在线英语词典,英文翻译,专业英语...
- (万字超详细的复习资料丨没有之一)通信原理考试复习资料,按需收藏加关注。
- 欧几里德 与 扩展欧几里得 学习笔记
- 苏州计算机云联盟协会,【缤FUN社团】计算机协会
- 详解 masm + textpad 编译环境的搭建
- 中移动收购米雷康姆在巴基斯坦子公司剩余股份
- codewars 一个很神奇的网站