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

Unity类银河战士恶魔城学习总结(P128 Switch UI with KeyBoard用键盘切换UI)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/

本章节实现了用键盘切换角色UI,技能树UI,合成面板UI和设置UI

UI.cs

1. 变量与字段

  • characterUIskillTreeUIcraftUIoptionsUI:这些字段分别表示不同的UI界面(如角色界面、技能树界面、制作界面、选项界面)。这些字段会通过 Inspector 面板进行设置和关联,确保这些UI界面在脚本中可以通过 GameObject 引用。

  • itemToolTipstatToolTip:这两个字段表示物品提示框和状态提示框,用于显示相应的提示信息。这些也是 public 类型,因此可以通过 Inspector 在编辑器中关联。

2. Start() 方法

  • SwitchTo(null):在 Start 方法中调用 SwitchTo,传入 null 作为参数。此操作会在游戏启动时隐藏所有UI元素,因为 SwitchTo 方法会将所有子元素(UI面板)设置为 SetActive(false)

  • itemToolTip.gameObject.SetActive(false)statToolTip.gameObject.SetActive(false):这两行代码会在游戏启动时隐藏物品提示框和状态提示框,确保它们初始状态不可见。

3. SwitchTo(GameObject _menu) 方法

  • 作用:该方法用于切换到指定的UI界面。

  • for (int i = 0; i < transform.childCount; i++):遍历当前UI对象的所有子物体,调用 SetActive(false) 隐藏它们。这一步确保了在显示新的UI界面时,所有其他的UI界面都会被隐藏。

  • _menu.SetActive(true):如果传入的 _menu 不为 null,则显示该UI界面(通过 SetActive(true))。

4. SwitchWithKeyTo(GameObject _menu) 方法

  • 作用:该方法用于处理切换UI的逻辑,如果目标UI界面已经显示,则隐藏它;如果目标UI界面未显示,则调用 SwitchTo 显示它。

  • if (_menu != null && _menu.activeSelf):首先检查传入的 _menu 是否为 null,并且它是否已经显示(即 activeSelftrue)。如果是,则调用 SetActive(false) 隐藏该UI界面。

  • SwitchTo(_menu):如果目标UI界面未显示,则调用 SwitchTo 方法来显示该界面。

脚本的布置方式

using UnityEngine;

public class UI : MonoBehaviour
{
    //存放4个UI界面
    [SerializeField] private GameObject characterUI;
    [SerializeField] private GameObject skillTreeUI;
    [SerializeField] private GameObject craftUI;
    [SerializeField] private GameObject optionsUI;

    //物品提示框和状态提示框
    public UI_ItemTooltip itemToolTip;
    public UI_StatToolTip statToolTip;


    void Start()
    {
        SwitchTo(null);

        itemToolTip.gameObject.SetActive(false);//戏启动时隐藏物品提示框和状态提示框
        statToolTip.gameObject.SetActive(false);
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.C))
            SwitchWithKeyTo(characterUI);

        if (Input.GetKeyDown(KeyCode.B))
            SwitchWithKeyTo(craftUI);

        if (Input.GetKeyDown(KeyCode.K))
            SwitchWithKeyTo(skillTreeUI);

        if (Input.GetKeyDown(KeyCode.I))
            SwitchWithKeyTo(optionsUI);

    }

    public void SwitchTo(GameObject _menu)// 该方法用于切换到指定的UI界面
    {
        for (int i = 0; i < transform.childCount; i++)//遍历当前UI对象的所有子物体
        {
            transform.GetChild(i).gameObject.SetActive(false);//遍历并隐藏所有子元素,确保了在显示新的UI界面时,所有其他的UI界面都会被隐藏
        }


        if (_menu != null)//传入的菜单不为空
        {
            _menu.SetActive(true);//显示
        }
    }


    public void SwitchWithKeyTo(GameObject _menu)//处理切换UI的逻辑
    {
        if (_menu != null && _menu.activeSelf)// UI界面已经显示,隐藏, 如果目标UI界面未显示,调用 SwitchTo 显示。
        {
            _menu.SetActive(false);
            return;
        }

        SwitchTo(_menu);
    }
}


http://www.kler.cn/a/401724.html

相关文章:

  • Vscode 远程切换Python虚拟环境
  • CFD 应用于分离过程:旋风分离器(第 2 部分)
  • 【大模型】prompt实践总结
  • 闫氏DP分析法应用
  • Vue3 pinia使用
  • 计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用
  • 【QT实战】加解密文件夹之————应用程序获取管理员权限
  • 365天深度学习训练营-第P5周:Pytorch实现运动鞋识别
  • 【STM32】在 STM32 USB 设备库添加新的设备类
  • 使用 helm 部署 gitlab
  • 投资策略规划最优决策分析
  • c++实现B树(下)
  • 【论文笔记】Towards Privacy-Aware Sign Language Translation at Scale
  • 手摸手5-springboot开启打印sql完整语句
  • ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
  • qt之QFTP对文件夹(含嵌套文件夹和文件)、文件删除下载功能
  • HTTP 响应头 Deprecation 字段在 API 版本迭代的应用
  • PHP 数组
  • Alpha 第 4 季:创作者聚焦—— The Intern @ The Hidden Walls
  • Zustand 让 React 状态变得太简单
  • 红外遥控报警器设计(模电课设)
  • 1 设计模式原则之开闭原则
  • 梧桐数据库深度解析并行查询优化技术
  • 国科大数据挖掘24秋期末考试试题回顾
  • 微服务瞎写
  • Spark 中 cache、persist 和 checkpoint 优化数据处理的三种重要机制介绍