欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Unity类银河战士恶魔城学习总结(P128 Switch UI with KeyBoard用键盘切换UI)

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

2025/11/12 11:59:33 来源:https://blog.csdn.net/suzh1qian/article/details/143789198  浏览:    关键词: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);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词