区块链技术博客
www.b2bchain.cn

Unity 游戏框架搭建 2019 (七十九) GUIManager(三)层级管理求职学习资料

D0b2wT.gif

本文介绍了Unity 游戏框架搭建 2019 (七十九) GUIManager(三)层级管理求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

在上一篇,我们完成了资源加载和卸载的逻辑。

到本篇为止,我们还剩一个问题,就是层级管理问题。

层级管理

在众多开源的 UIManager 方案中,对于层级管理的实现,目前有两种方式,一种是根据 GameObject 的前后顺序实现,另一种则是通过 Canvas.sortOrder 解决。从实现难度的角度来件,前者更容易一些。

所以作为框架入门的我们来讲,先掌握前者,在后续合适的时机,我们再去学些后者。

如何实现?

我们在 Canvas GameObject 下创建 3 个 GameObject,分别是:Bg、Common、Top。创建之后如下图所示:
Unity 游戏框架搭建 2019 (七十九) GUIManager(三)层级管理
大家注意右边的 RectTransform 的关于位置的数据。

这样做有什么用呢? Bg、Common、Top 表示的是三个层级。在 UGUI 中,界面的 GameObject 所在的层级越靠近底部,则在屏幕中,越靠近顶部,从而呢,就越不容易被遮挡。

目前呢,我们有了三个层级,暂时是够用了。

对应地,我们要设计出来三个枚举,来表示层级。

    public enum UILayer     {         Bg,         Common,         Top     }

然后呢,我们在加载界面的时候,可以选择将界面加载到哪个层级里。
实现代码如下:
“`cs
using UnityEngine;

namespace QFramework
{
public enum UILayer
{
Bg,
Common,
Top
}

public class GUIManager : MonoBehaviour {     public static GameObject LoadPanel(string panelName, UILayer layer)     {         var panelPrefab = Resources.Load<GameObject>(panelName);         var panel = Instantiate(panelPrefab);         var canvasObj = GameObject.Find("Canvas");          switch (layer)         {             case UILayer.Bg:                 panel.transform.SetParent(canvasObj.transform.Find("Bg"));                 break;

在上一篇,我们完成了资源加载和卸载的逻辑。

到本篇为止,我们还剩一个问题,就是层级管理问题。

层级管理

在众多开源的 UIManager 方案中,对于层级管理的实现,目前有两种方式,一种是根据 GameObject 的前后顺序实现,另一种则是通过 Canvas.sortOrder 解决。从实现难度的角度来件,前者更容易一些。

所以作为框架入门的我们来讲,先掌握前者,在后续合适的时机,我们再去学些后者。

如何实现?

我们在 Canvas GameObject 下创建 3 个 GameObject,分别是:Bg、Common、Top。创建之后如下图所示:
Unity 游戏框架搭建 2019 (七十九) GUIManager(三)层级管理
大家注意右边的 RectTransform 的关于位置的数据。

这样做有什么用呢? Bg、Common、Top 表示的是三个层级。在 UGUI 中,界面的 GameObject 所在的层级越靠近底部,则在屏幕中,越靠近顶部,从而呢,就越不容易被遮挡。

目前呢,我们有了三个层级,暂时是够用了。

对应地,我们要设计出来三个枚举,来表示层级。

    public enum UILayer     {         Bg,         Common,         Top     }

然后呢,我们在加载界面的时候,可以选择将界面加载到哪个层级里。
实现代码如下:
“`cs
using UnityEngine;

namespace QFramework
{
public enum UILayer
{
Bg,
Common,
Top
}

public class GUIManager : MonoBehaviour {     public static GameObject LoadPanel(string panelName, UILayer layer)     {         var panelPrefab = Resources.Load<GameObject>(panelName);         var panel = Instantiate(panelPrefab);         var canvasObj = GameObject.Find("Canvas");          switch (layer)         {             case UILayer.Bg:                 panel.transform.SetParent(canvasObj.transform.Find("Bg"));                 break;

在上一篇,我们完成了资源加载和卸载的逻辑。

到本篇为止,我们还剩一个问题,就是层级管理问题。

层级管理

在众多开源的 UIManager 方案中,对于层级管理的实现,目前有两种方式,一种是根据 GameObject 的前后顺序实现,另一种则是通过 Canvas.sortOrder 解决。从实现难度的角度来件,前者更容易一些。

所以作为框架入门的我们来讲,先掌握前者,在后续合适的时机,我们再去学些后者。

如何实现?

我们在 Canvas GameObject 下创建 3 个 GameObject,分别是:Bg、Common、Top。创建之后如下图所示:
Unity 游戏框架搭建 2019 (七十九) GUIManager(三)层级管理
大家注意右边的 RectTransform 的关于位置的数据。

这样做有什么用呢? Bg、Common、Top 表示的是三个层级。在 UGUI 中,界面的 GameObject 所在的层级越靠近底部,则在屏幕中,越靠近顶部,从而呢,就越不容易被遮挡。

目前呢,我们有了三个层级,暂时是够用了。

对应地,我们要设计出来三个枚举,来表示层级。

    public enum UILayer     {         Bg,         Common,         Top     }

然后呢,我们在加载界面的时候,可以选择将界面加载到哪个层级里。
实现代码如下:
“`cs
using UnityEngine;

namespace QFramework
{
public enum UILayer
{
Bg,
Common,
Top
}

public class GUIManager : MonoBehaviour {     public static GameObject LoadPanel(string panelName, UILayer layer)     {         var panelPrefab = Resources.Load<GameObject>(panelName);         var panel = Instantiate(panelPrefab);         var canvasObj = GameObject.Find("Canvas");          switch (layer)         {             case UILayer.Bg:                 panel.transform.SetParent(canvasObj.transform.Find("Bg"));                 break;

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Unity 游戏框架搭建 2019 (七十九) GUIManager(三)层级管理求职学习资料
分享到: 更多 (0)
D0b2wT.gif

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们