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


    最终效果

    在这里插入图片描述

    系列导航

    前言

    本节主要实现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是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

    在这里插入图片描述

  • 相关阅读:
    【Web前端】CSS详解(中篇)
    vue多层嵌套子路由不显示
    五、C语言判断语句
    Java常用17个工具类方法,提升开发效率的“轮子”,避免重复造轮子
    实验四、零比特插入《计算机网络》
    六石编程学:问题要面对,办法要技巧,做不好的功能要想办法
    程序员必备!10款实用便捷的Git可视化管理工具
    第一次使用马哈鱼血缘分析工具(SQLFlow)
    实名认证在文旅出行行业的应用场景有哪些?
    核心实验23_GRE over IPsec vpn_ENSP
  • 原文地址:https://blog.csdn.net/qq_36303853/article/details/139474096