9.UIPanel组件

9.FGUI基础-基础知识-使用发布的UI-UIPanel加载界面


9.1 知识点

UIPanel的使用

Hierarchy窗口右键—>FairyGUI—>UIPanel 点击后会自动创建Stage Camera 这是FGUI的摄像机 默认渲染UI层 让主摄像机不渲染UI层。

选中创建出的UIPanel,在Inspector窗口中点击PackageName或ComponentName。只会显示包资源发布进unity的包 同时组件只显示设置为导出的 重新发布后要点击一次Refresh刷新查看。

在弹出窗口中选择对应的包和组件点击OK即可。

注意:UIPanel只能自动载入放置在Resources目录或其子目录下的UI包。

获取UIPanel和组件

//通过拖拽UIPanel的形式 来获得我们在FGUI中拼凑的组件
public UIPanel uiPanel;
GComponent view = uiPanel.ui;

UIPanel中的常用属性

PackageName 包名

Component Name 组件名

Package Path 引用的组件路径 这个参数不可修改

Render Mode 渲染模式

  • Screen Space Overlay:UI始终显示在最前面
  • Screen Space Camera:可以自定义使用哪个正交摄像机渲染UI
  • World Space:在世界控件使用UI,用透视相机渲染,默认是主相机,如果不是,可以自己设置关联相机

Render Camera:当渲染模式是后两种时,可以自己设置渲染UI的摄像机,如果不设置,默认为场景的主摄像机。如果模式是World Space模式,如果不设置相机也没有主摄像机,UI无法点击

Sorting order 排序显示顺序,越大的显示在越前面

Fairy Batching:FGUI的批处理开关,切换这个值,可以在编辑模式下实时看到DrawCall的变化。开启它后会开启深度调整,即使我们的UI层级没有刻意设置,底层也能帮助我们进行优化

Hit Test Mode: 点击测试模式

  • 默认:使用内置机制判断点击和触摸,不使用射线,效率较高,一般默认就行
  • 射线:使用射线判断,UIPanel会自动创建碰撞体,适用于UIPanel需要和其它3D物体交互时使用

Touch Disabled:交互开关 勾选后,将关闭点击检测,如果UI没有可以交互的内容,可以勾选它提升性能

Set Native Children Order:可以在UIPanel下挂其它3D对象,比如模型粒子,层级和UIPanel一样

  • 勾选 该选项,可以上3D对象显示在UIPanel的层次上,相当于把3D物体插入到UI层次中。
  • 但是3D物体只能显示在UI上,不能穿插

UI Transform:UI变换

  • 当渲染模式为Screen Space时建议通过UI Transform设置
  • 当渲染模式为World Space时建议通过Transform设置

Fit Screen:设置UIPanel适配屏幕

  • Fit Size:UI将铺满屏幕
  • Fit Width And Set Middle:UI将横向铺满屏幕,然后上下居中
  • Fit Height And Set Center:UI将纵向铺满屏幕,然后左右居中

动态创建UIPanel

//首先加载对应的UI包 如果不先加载包会报错 且显示不出对应Panel
UIPackage.AddPackage("UI/FGUI教程");

//创建一个对象 设置为UI层 添加UIPanel组件 设置相关参数即可
GameObject obj = new GameObject("UIPanel2");
obj.layer = LayerMask.NameToLayer("UI");
UIPanel uiPanel2 = obj.AddComponent<UIPanel>();

//设置关键属性 包名和组件名
uiPanel2.packageName = "FGUI教程";
uiPanel2.componentName = "Lesson09_FGUI基础_基础知识_使用发布的UI_UIPanel加载界面";

//想要改变别的参数属性 要获得UIPanel的container.出来
//改变渲染方式
uiPanel2.container.renderMode = RenderMode.ScreenSpaceOverlay;
//改变DrawCall优化
uiPanel2.container.fairyBatching = true;
//改变排序层
uiPanel2.SetSortingOrder(1, true);
//改变测试模式
uiPanel2.SetHitTestMode(HitTestMode.Default);

//创建UI 会自动创建Stage摄像机 和一些其他 比如Stage和GRoot
uiPanel2.CreateUI();

UIPanel的排序

默认排序是通过SortingOrder进行排序的。

当渲染模式为ScreenSpace屏幕空间渲染时,SortingOrder为1000这个值是个特殊值。1000以上UIPanel会显示在2D UI的上面,1000以下都显示在2D UI的下面。

当渲染模式为WorldSpace世界空间渲染时,如果想要通过z轴来进行排序,需要将需要通过z轴排序的UIPanel的sortingOrder设置为相同值,然后调用一个API。

Stage.inst.SortWorldSpacePanelsByZOrder(100);

不建议大家使用WorldSpace的模式渲染 血条UI,还是通过 ScreenSpace进行渲染 然后通过 坐标系转换 来不停的更新UI坐标就行了。


9.2 知识点代码

using FairyGUI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson09_FGUI基础_基础知识_使用发布的UI_UIPanel加载界面 : MonoBehaviour
{
    //通过拖拽UIPanel的形式 来获得我们在FGUI中拼凑的组件
    public UIPanel uiPanel;

    void Start()
    {
        #region 知识点一 UIPanel的使用

        //1.Hierarchy窗口右键—>FairyGUI—>UIPanel
        //2.选中创建出的UIPanel 在Inspector窗口中点击PackageName或ComponentName
        //3.在弹出窗口中选择对应的包和组件点击OK即可

        //注意:UIPanel只能自动载入放置在Resources目录或其子目录下的UI包

        #endregion

        #region 知识点二 获取UIPanel和组件

        //GComponent view = uiPanel.ui;

        #endregion

        #region 知识点三 UIPanel中的常用属性

        #endregion

        #region 知识点四 动态创建UIPanel

        //首先加载对应的UI包 如果不先加载包会报错 且显示不出对于Panel
        UIPackage.AddPackage("UI/FGUI教程");

        //创建一个对象 设置为UI层 添加UIPanel组件 设置相关参数即可
        GameObject obj = new GameObject("UIPanel2");
        obj.layer = LayerMask.NameToLayer("UI");
        UIPanel uiPanel2 = obj.AddComponent<UIPanel>();

        //设置关键属性 包名和组件名
        uiPanel2.packageName = "FGUI教程";
        uiPanel2.componentName = "Lesson09_FGUI基础_基础知识_使用发布的UI_UIPanel加载界面";

        //想要改变别的参数属性 要获得UIPanel的container.出来
        //改变渲染方式
        uiPanel2.container.renderMode = RenderMode.ScreenSpaceOverlay;
        //改变DrawCall优化
        uiPanel2.container.fairyBatching = true;
        //改变排序层
        uiPanel2.SetSortingOrder(1, true);
        //改变测试模式
        uiPanel2.SetHitTestMode(HitTestMode.Default);

        //创建UI 会自动创建Stage摄像机 和一些其他 比如Stage和GRoot
        uiPanel2.CreateUI();

        #endregion

        #region 知识点五 UIPanel的排序

        //默认排序是通过SortingOrder进行排序的

        //当渲染模式为ScreenSpace屏幕空间渲染时
        //SortingOrder为1000这个值是个特殊值
        //1000以上UIPanel会显示在2D UI的上面
        //1000以下都显示在2D UI的下面

        //当渲染模式为WorldSpace世界空间渲染时
        //如果想要通过z轴来进行排序 需要将需要通过z轴排序的UIPanel的sortingOrder设置为相同值
        //然后调用一个API
        Stage.inst.SortWorldSpacePanelsByZOrder(100);

        //不建议大家使用WorldSpace的模式 渲染 血条UI
        //还是通过 ScreenSpace进行渲染 然后通过 坐标系转换 来不停的更新UI坐标就行了

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏