【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12(附带项目源码)

最终效果

在这里插入图片描述

系列导航

文章目录

  • 最终效果
  • 系列导航
  • 前言
  • UI框架
    • 先绘制一些常用UI面板,设置为预制件
      • 提示弹窗
      • 用户列表
      • 菜单
      • 输入框弹窗
    • 创建各个面板的脚本控制代码
    • 控制菜单界面按钮事件
  • 源码
  • 结束语

前言

本节主要实现UI框架调用不同的面板界面

UI框架

不懂UI框架的设计思路可以查看我之前写的笔记:【Unity小技巧】手戳一个简单易用的游戏UI框架(附源码)

先绘制一些常用UI面板,设置为预制件

在这里插入图片描述

提示弹窗

在这里插入图片描述

用户列表

在这里插入图片描述
去除滚动条和水平滚动
在这里插入图片描述
面板内容添加Grid Layout Group控制子物体的布局
添加Content Size Fitter组件,配置垂直适应为Preferred Size,自动按子物体数量适配垂直高度
在这里插入图片描述

菜单

在这里插入图片描述
修改复选框的背景和选中图片
在这里插入图片描述
在这里插入图片描述

输入框弹窗

在这里插入图片描述

创建各个面板的脚本控制代码

比如MenuPanel菜单面板代码

public class MenuPanel : BasePanel
{
    public Button btnCancel;//返回游戏
    public Button btnAtlas;//查看图鉴
    public Button btnRestart;//重新开始
    public Button btnMainMenu;//主菜单
    [SerializeField] private SceneField mainMenuScene;//主菜单场景

    private void Awake()
    {
        btnCancel.onClick.AddListener(OnBtnCancel);
        btnAtlas.onClick.AddListener(OnBtnAtlas);
        btnRestart.onClick.AddListener(OnBtnRestart);
        btnMainMenu.onClick.AddListener(OnBtnMainMenu);
    }
    
    public void OnBtnCancel()
    {
        ClosePanel();
    }

    public void OnBtnAtlas()
    {
        UIManager.Instance.OpenTips("功能正在火速开发中,敬请期待");
    }

    public void OnBtnRestart()
    {
        ClosePanel();
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }

    public void OnBtnMainMenu()
    {
        ClosePanel();
        SceneManager.LoadScene(mainMenuScene);
    }
}

配置
在这里插入图片描述
其他面板脚本也类似配置即可,记得继承BasePanel

控制菜单界面按钮事件

新增MainMenuPanel

public class MainMenuPanel : MonoBehaviour
{
    public Button btnChangeUser;//更改用户
    public Button btnMenu;//选项
    public Button btnHelp;//帮助
    public Button btnQuit;//退出

    private void Awake()
    {
        btnChangeUser.onClick.AddListener(OnBtnChangeUser);
        btnMenu.onClick.AddListener(OnBtnMenu);
        btnHelp.onClick.AddListener(OnBtnHelp);
        btnQuit.onClick.AddListener(OnBtnQuit);
    }

    //打开用户列表
    public void OnBtnChangeUser()
    {
        UIManager.Instance.OpenPanel(UIConst.UserListPanel);
    }

    public void OnBtnMenu()
    {
        UIManager.Instance.OpenPanel(UIConst.MenuPanel);
    }

    public void OnBtnHelp()
    {
        UIManager.Instance.OpenTips("功能正在火速开发中,敬请期待");
    }

    public void OnBtnQuit()
    {
        UIManager.Instance.OpenTips("功能正在火速开发中,敬请期待");
    }
}

配置
在这里插入图片描述
效果
在这里插入图片描述

源码

源码不出意外的话我会放在最后一节

结束语

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/705355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

visdom使用时所遇的问题及解决方法

最近在用visdom进行可视化的过程中,虽然可有效的避免主机拒绝访问(该问题的解决方法,请参考深度学习可视化工具visdom使用-CSDN博客)即在终端输入python -m visom.server 1.训练过程中visdom出现ValueError: too many file descr…

Kali之metasploit学习

目标:尝试使用metasploit制作一个windows 后门(exe文件) 一:使用metasploit生成一个exe安装包。 二、将对应的可执行文件放入到目标机 python3 -m http.server 端口号: 模块化启动一个端口。 windows 证书管理工具&…

【UIDynamic-动力学-复习昨天的内容-预习今天的内容 Objective-C语言】

一、复习昨天的内容 1.昨天我们学了,核心动画,核心动画呢,它是作用于CALayer上的,所以,我们先说了CALayer,然后,说了一个核心动画的问题, 关于这个CALayer啊,这个Layer的一些基本的属性, 1)边框:testView.layer.borderWidth = 10;// 边框是border开头儿的 2)边…

VMware安装ubuntu22.4图文教程

一 、下载镜像 下载地址:Index of /ubuntu-releases/22.04.4/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 二、创建虚拟机 打开VMware点击左上角文件,创建新的虚拟机,打开后如下图: 下一步,镜像文件就是…

滚动条样式

/*滚动条*/ //滚动条没有滑块的轨道部分. ::-webkit-scrollbar-track-piece {background: #fff;border-radius: 0px;opacity: 1;border: 1px solid #D9D9D9; } //整个滚动条 ::-webkit-scrollbar {width: 8px;height: 8px;background-color: transparent; } //滚动条上的滚动滑…

java.nio.charset.UnmappableCharacterException

问题 java.lang.IllegalArgumentException: java.nio.charset.UnmappableCharacterException: Input length 1 解释为编码转换有问题 问题错在位置 非汉字存在 打包的时候就会报异常

HTML列表和表格标签

目录 1.列表标签 1.1无序列表 1.2有序列表 1.3定义列表 2. 表格标签、 2.1表格标签的属性 2.2合并单元格 1.列表标签 1.1无序列表 <ul>: [type 属性&#xff1a; disc( 实心圆点 )( 默认 ) 、 circle( 空心圆圈 ) 、 square( 实心方块 )] <li>: 列表中…

C语言| 编程获取数组的长度

用sizeof也可以获得整个数组在内存中所占的字节数。 总的字节数除以一个元素所占的字节数就是数组的总长度。 这样不管数组是增加还是减少元素&#xff0c;sizeof(a) /sizeof(a[0])都能自动求出数组的长度。 字符串中有一个strlen()函数可以求出字符数组中字符串的长度。 #inc…

【python】networkx库计算:特征向量中心度

目录 0.简介 1.前提 1&#xff09;ctrl R 唤出cmd 2&#xff09;安装networkx 3&#xff09;查看networkx版本 2.方法一&#xff1a;通过给出无向图计算特征向量中心度 1&#xff09;给出无向图&#xff0c;添加节点和边 2&#xff09;可以用以下代码将无向图用pyplot…

【每日一练】day3

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

透视环世物流:一个AI降本的产业典型样本

在过去的多年时间里&#xff0c;与其说低代码完成的数字原生的普惠&#xff0c;不如说其最强的能力恰是能帮助企业用最低的门槛、最高的效率构建出与自身适配的流程和业务应用&#xff0c;在底层帮助企业构建出一个被极致拆分和分子化的软件开发中台。 而透过环世物流&#x…

Prometheus——部署详解

目录 一、Prometheus Server端安装和相关配置 1.上传安装包并解压 2.配置系统启动文件 3.启动 二、部署Node Exporters监控系统指标 三、监控Mysql配置示例 1.Mysql服务器操作 2.Prometheus服务器操作 四、监控Nginx配置示例 1.在Nginx服务器操作 2.Prometheus服务器…

Nexus搭建maven私有仓库

目录 1.Nexus介绍 2.操作步骤 1.下载Nexus 2.安装和启动nexus 3.使用私服 1.登录管理员 2.私服介绍 1.配置参数认识 2.创建仓库 4.maven使用私库 1.安装maven 2.配置maven 3.在项目中打包部署和发布 5.向私库添加jar包 ​1.添加jar 2.使用jar 1.Nexus介绍 内网…

水泥行业超低排放简介

在当今社会&#xff0c;随着环保意识的不断提高&#xff0c;水泥行业作为重要的工业领域&#xff0c;其超低排放的实施范围及成效日益受到人们的关注。朗观视觉小编将从多个角度探讨水泥行业超低排放的实施范围&#xff0c;分析其背后的意义与影响&#xff0c;展望未来的发展趋…

【Linux】段错误(核心已转储)(core dumped)问题的分析方法

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

美摄科技匿名化处理解决方案,包含模糊、同色、马赛克、效果遮挡等各种形式

信息安全已成为企业发展中不可忽视的重要一环&#xff0c;随着信息安全法规的日益严格和公众对个人隐私保护意识的不断提高&#xff0c;企业如何在保障业务顺畅进行的同时&#xff0c;满足信息安全和隐私保护的要求&#xff0c;成为了亟待解决的问题。美摄科技凭借其强大的技术…

Stable Diffusion: ControlNet Canny检测

同样在ControlNet中&#xff0c;尝试换为Canny检测 拖放原始姿态图片。 勾选“启用”&#xff0c;“完美像素模式”&#xff0c;“允许预览” 控制类型选择“Canny(硬边缘&#xff09;” 预处理器选“canny”&#xff0c;会对原始姿态图片做Canny边缘检测 模型部分会自动选…

端点物联开发教程之(二)开发演示

目录 一、产品定义 二、基础资源下载 三、嵌入式端开发 3.1 工程搭建 3.2 模型文件修改 3.3 头文件定义 3.4 模型功能开发 3.5 mqtt应用层配置 3.6启动任务 四、用户后端开发 4.1 功能分析 4.2 创建模型文件 4.3 添加基础功能 4.4 数据更新 4.5 阈值设置 4.6 模…

HCIA6以太网基础基于MAC划分VLAN

&#xff08;简写的命令可以敲Tab按键补全剩余&#xff09; 1.组网需求 场景&#xff1a;公司的网络中&#xff0c;管理者将同一部门的员工划分到VLAN10。要求只有本部门员工的PC接入才能互访&#xff0c;其他PC接入交换机属于其他VLAN&#xff08;666&#xff09;。可以配置…

Android WebSocket长连接的实现

一、为什么需要 WebSocket 初次接触 WebSocket 的人&#xff0c;都会问同样的问题&#xff1a;我们已经有了 HTTP 协议&#xff0c;为什么还需要另一个协议&#xff1f;它能带来什么好处&#xff1f; 答案很简单&#xff0c;因为 HTTP 协议有一个缺陷&#xff1a;通信只能由客…