【SKFramework框架核心模块】3-10、UI模块

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

【Unity3D框架】SKFramework框架完全教程《全网最全》-专栏文章目录:
https://blog.csdn.net/q764424567/article/details/143926557

二、正文

2-1、介绍

SKFramework框架UI模块,将加载UI常用的方法进行封装,方便调用。

常用方法:

  • OnLoad:加载
  • OnOpen:打开
  • OnClose:关闭
  • OnUnload:卸载

接下来看一下如何使用。

2-2、使用说明

加载视图:

csharp 复制代码
T LoadView<T>(string viewName, string resourcesPath, ViewLevel viewLevel = ViewLevel.COMMON, object data = null) where T : MonoBehaviour, IUIView;

参数:
viewName:视图命名
resourcePath:视图Prefab在Resources文件夹中的路径
viewLevel:视图层级
data:视图数据

返回值:
UIView视图
注:该接口通过Resources.Load方式加载视图资源

异步加载视图:

csharp 复制代码
void LoadViewAsync<T>(string viewName, string assetPath, ViewLevel viewLevel = ViewLevel.COMMON, object data = null, Action<bool, T> onCompleted = null) where T : MonoBehaviour, IUIView;

参数:
viewName:视图命名
assetPath:视图资产路径
viewLevel:视图层级
data:视图数据
onCompleted:加载完成回调
注:该接口通过AssetsBundle方式加载视图资源

打开视图:

csharp 复制代码
T OpenView<T>(string viewName, string resourcesPath, ViewLevel viewLevel = ViewLevel.COMMON, bool instant = false, object data = null) where T : MonoBehaviour, IUIView;

参数:
viewName:视图名称
resourcePath:视图Prefab在Resources文件夹中的路径
viewLevel:视图层级
instant:是否立刻显示(不播放视图动画过程),默认为false
data:视图数据

返回值:
UIView视图
注:该接口通过Resources.Load方式加载视图资源,如果视图已经加载,直接打开。

异步打开视图:

csharp 复制代码
void OpenViewAsync<T>(string viewName, string assetPath, ViewLevel viewLevel = ViewLevel.COMMON, bool instant = false, object data = null, Action<bool, T> onCompleted = null) where T : MonoBehaviour, IUIView;

参数:
viewName:视图名称
assetPath:视图资产路径
viewLevel:视图层级
instant:是否立刻显示(不播放视图动画过程),默认为false
data:视图数据
onCompleted:加载完成回调
注:该接口通过AssetsBundle方式加载视图资源,如果视图已经加载,直接打开。

关闭视图:

csharp 复制代码
bool CloseView(string viewName, bool instant = false);IUIView HideView(string viewName, bool instant)
1
参数:

viewName:视图名称

instant:是否立刻关闭(不播放视图动画过程),默认为false

返回值:

true:关闭成功

false:不存在该视图,操作失败

卸载视图:

csharp 复制代码
bool UnloadView(string viewName);

参数:
viewName:视图名称

返回值:
true:卸载成功
false:不存在该视图,卸载失败

获取视图:

csharp 复制代码
T GetView<T>(string viewName) where T : IUIView;

参数:
viewName:视图名称

返回值:
UIView视图

调用示例:

UI身上挂载的脚本:

csharp 复制代码
public class ExampleView : MonoBehaviour, IUIView
{
    public string viewName { get ; set; }

    public void OnClose()
    {
        Debug.Log("关闭UI");
    }

    public void OnLoad(object data)
    {
        Debug.Log("加载UI");
    }

    public void OnOpen(object data)
    {
        Debug.Log("打开UI");
    }

    public void OnUnload()
    {
        Debug.Log("卸载UI");
    }
}

制作一个UI,挂载ExampleView脚本,然后拉到Resources文件夹,做成预制体:

去调用,加载UI:

csharp 复制代码
using SK.Framework.UI;
using SK.Framework;
using UnityEngine;

public class UseUI : MonoBehaviour
{
    void Start()
    {
        SKFramework.Module<UI>().LoadView<ExampleView>("PanelTop");

        SKFramework.Module<UI>().OpenView<ExampleView>();

        SKFramework.Module<UI>().CloseView<ExampleView>();

        SKFramework.Module<UI>().UnloadView<ExampleView>();
    }
}

运行结果:

2-3、实现及代码分析

加载UI:

有resourcesPath地址的时候就传递进来,不然的话返回的是预制体的名字,然后在Resource文件夹中找到这个预制体,生成:

打开UI:

不存在就去加载,存在的话就调用自己的OnOpen函数:

三、后记

如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。


你的点赞就是对博主的支持,有问题记得留言:

博主主页有联系方式。

博主还有跟多宝藏文章等待你的发掘哦:

专栏 方向 简介
GameFramework框架 框架 Unity之GameFramework框架快速应用、使用说明、源码分析等文章合集。
Unity3D开发小游戏 小游戏开发教程 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。
Unity3D从入门到进阶 入门 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。
Unity3D之UGUI UGUI Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。
Unity3D之读取数据 文件读取 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。
Unity3D之数据集合 数据集合 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。
Unity3D之VR/AR(虚拟仿真)开发 虚拟仿真 总结博主工作常见的虚拟仿真需求进行案例讲解。
Unity3D之插件 插件 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等
Unity3D之日常开发 日常记录 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等
Unity3D之日常BUG 日常记录 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。
相关推荐
weixin_409383124 小时前
godot创建两种敌人僵尸 一种吐舌头 一种在角色脚下生成圆形伤害圈 两种僵尸均继承enemy脚本 理解继承
游戏引擎·godot
Flamingˢ8 小时前
ZYNQ + OV5640 视频系统开发(四):HDMI 显示链路
嵌入式硬件·fpga开发·硬件架构·音视频
AwesomeCPA8 小时前
Miaoduo MCP 使用指南(VDI内网环境)
前端·ui·ai编程
潜创微科技--高清音视频芯片方案开发8 小时前
2026年HUB方案商选型指南:主流厂商核心优势与不同应用场景适配方案深度分析
音视频·硬件工程
月诸清酒9 小时前
26-260410 AI 科技日报 (阿里开源视频模型HappyHorse登顶,马斯克疑似泄露Claude参数)
人工智能·开源·音视频
军军君0110 小时前
Three.js基础功能学习十八:智能黑板实现实例五
前端·javascript·vue.js·3d·typescript·前端框架·threejs
ai产品老杨10 小时前
异构计算时代的视频底座:基于 ZLMediaKit 与 Spring Boot 的 X86/ARM 跨平台架构解析
arm开发·spring boot·音视频
hu556679811 小时前
Photoshop(PS)蓝底和红底照片的CMYK值色值是多少
ui·photoshop
mxwin11 小时前
Unity Shader 跨平台兼容性:处理纹理坐标翻转与精度差异
unity·游戏引擎
王家视频教程图书馆11 小时前
godot 下载地址
游戏引擎·godot