首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【SKFramework框架核心模块】3-9、资源模块

  • 25-03-03 16:42
  • 4085
  • 5245
blog.csdn.net

推荐阅读

  • CSDN主页
  • GitHub开源地址
  • Unity3D插件分享
  • QQ群:398291828
  • 小红书
  • 小破站

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

一、前言

【Unity3D框架】SKFramework框架完全教程《全网最全》-专栏文章目录:
http://iyenn.com/rec/1695645.html

二、正文

2-1、介绍

AssetBundle是Unity提供的一种资源存储压缩包,包含了一些Unity的资源,如图片,模型,纹理,音视频等等,也可以包含用户自定义的二进制文件。提供了一种程序运行时动态加载资源包的方法,如游戏中不同版本的资源更新即通过更新资源AB包即可。

Unity官方文档描述AssetBundle为一个容器,就像文件夹一样,包含其他文件。这些其他文件有两种类型,一种是序列化文件,包含资产分解成单独的对象并写到该单个文件中。另一种是资源文件,是为某些资产(纹理和音频)单独存储的二进制数据块,以允许Unity从另一个线程上的磁盘有效加载它们。

总而言之,AssetBundle就是一种资源包,让你能在运行时动态的加载卸载它,也可以灵活更新,即可以无需放在游戏本地,大大降低了包体大小。

SKFramework框架的资源加载模块,将AssetBundle加载的代码进行了封装调用。

接下来,看一下如何使用。

2-2、使用说明

Mode:资源加载模式

  • Editor:编辑器模式
  • SIMULATIVE:模拟模式(StreamingAssets)
  • REALITY:真实环境

AssetBundleUrl:AssetBundle资源包所在路径

AssetBundleManifestName:manifest文件名称

加载资产:

void LoadAssetAsync<T>(string assetPath, Action<float> onLoading, Action<bool, T> onCompleted)
void LoadAssetAsync<T>(MonoBehaviour executer, string assetPath, Action<float> onLoading, Action<bool, T> onCompleted)

参数:
executer:开启加载协程的Monobehaviour
assetPath:资产路径
onLoading:加载中回调
onCompleted:加载完成回调

返回值:
Coroutine加载协程
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

卸载资产:

void UnloadAsset(AssetInfo assetInfo, bool unloadAllLoadedObjects)

参数:
assetInfo:资产信息
unloadAllLoadedObjects:是否卸载其所有实例,默认为false
  • 1
  • 2
  • 3
  • 4
  • 5

卸载所有资产:

UnloadAllAsset(bool unloadAllLoadedObjects)
  • 1

加载场景:

void LoadSceneAsync(string sceneAssetPath, Action<float> onLoading, Action onCompleted)
void LoadSceneAsync(MonoBehaviour executer, string sceneAssetPath, Action<float> onLoading, Action onCompleted)

参数:
executer:开启加载协程的Monobehaviour
sceneAssetPath:场景资源路径
onLoading:加载中回调
onCompleted:加载完成回调

返回值:
Coroutine加载协程
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

卸载场景:

bool UnloadScene(SceneInfo sceneInfo)

参数:
sceneInfo:场景信息

返回值:
true:卸载成功
false:未加载该场景,卸载失败
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

调用示例:

using SK.Framework;
using SK.Framework.Resource;
using UnityEngine;

public class UseResource : MonoBehaviour
{
    void Start()
    {
        //异步加载资产
        SKFramework.Module<Resource>().LoadAssetAsync<AudioClip>("Assets/click01.mp3", onCompleted: (success, clip) =>
        {
            if (success)
            {
                AudioSource source = gameObject.AddComponent<AudioSource>();
                source.clip = clip;
                source.Play();
            }
        });
        //异步加载场景
        SKFramework.Module<Resource>().LoadSceneAsync("Assets/Scenes/Example.unity");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2-3、实现及代码分析

异步加载资源,核心代码使用了UnityWebRequest进行ab包加载:
在这里插入图片描述
加载完成后回调,使用资源:

在这里插入图片描述

三、后记

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


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

博主主页有联系方式。

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

专栏方向简介
GameFramework框架框架Unity之GameFramework框架快速应用、使用说明、源码分析等文章合集。
Unity3D开发小游戏小游戏开发教程分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。
Unity3D从入门到进阶入门从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。
Unity3D之UGUIUGUIUnity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。
Unity3D之读取数据文件读取使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。
Unity3D之数据集合数据集合数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。
Unity3D之VR/AR(虚拟仿真)开发虚拟仿真总结博主工作常见的虚拟仿真需求进行案例讲解。
Unity3D之插件插件主要分享在Unity开发中用到的一些插件使用方法,插件介绍等
Unity3D之日常开发日常记录主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等
Unity3D之日常BUG日常记录记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。
Unity爱好者社区
微信公众号
分享Unity相关的技术文章、工具资源等。
注:本文转载自blog.csdn.net的恬静的小魔龙的文章"https://itmonon.blog.csdn.net/article/details/144265465"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top