【Unity程序技巧】 资源加载管理器

这篇具有很好参考价值的文章主要介绍了【Unity程序技巧】 资源加载管理器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity程序技巧】 资源加载管理器,# unity实战基础,unity,游戏引擎


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity基础实战

⭐🅰️⭐




⭐前言⭐


🎶(W) 资源加载管理器


1.涉及知识点


【Unity程序技巧】 资源加载管理器,# unity实战基础,unity,游戏引擎


2. 特点


  • 方便加载资源,为资源加载提供了接口

3.脚本


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;


public class ResourceManager : SingleManager<ResourceManager>
{
    //同步加载资源方法
    public T Load<T>(string name) where T:Object
    {
        T resource = Resources.Load<T>(name);
     
        if (resource is GameObject)

            return GameObject.Instantiate(resource);
        else
            return resource;
    }


    //异步加载资源方法
    public void LoadAsync<T>(string name, UnityAction<T> callback) where T:Object
    {
        //开启异步加载的协程
        UpdateManager.GetInstance().StartCoroutine(ReallyLoadAsync(name, callback));
    }

    //真正的协同程序函数  用于 开启异步加载对应的资源
    private IEnumerator ReallyLoadAsync<T>(string name, UnityAction<T> callback) where T : Object
    {
        ResourceRequest r = Resources.LoadAsync<T>(name);
        yield return r;
        //等待加载完之后回调
        if (r.asset is GameObject)

            callback(GameObject.Instantiate(r.asset) as T);
        else
            callback(r.asset as T);
    }
   //为什么这里要用Unity委托,因为实例化语句执行后我们要获得实例化的返回值。但在协同函数中,无法实现,所以需要一个有返回值的委托代替

}

  • 加载测试
    void Start()
    {
        //同步加载
        ResourceManager.GetInstance().Load<GameObject>("asda");
        //异步加载
        ResourceManager.GetInstance().LoadAsync<GameObject>("asdsa",(aa)=>
        {
            print(aa.name); 
        });
    }


⭐🅰️⭐


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


【Unity程序技巧】 资源加载管理器,# unity实战基础,unity,游戏引擎


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class ResourceManager : SingleManager
{
//同步加载资源方法
public T Load(string name) where T:Object
{
T resource = Resources.Load(name);

    if (resource is GameObject)

        return GameObject.Instantiate(resource);
    else
        return resource;
}


//异步加载资源方法
public void LoadAsync<T>(string name, UnityAction<T> callback) where T:Object
{
    //开启异步加载的协程
    UpdateManager.GetInstance().StartCoroutine(ReallyLoadAsync(name, callback));
}

//真正的协同程序函数  用于 开启异步加载对应的资源
private IEnumerator ReallyLoadAsync<T>(string name, UnityAction<T> callback) where T : Object
{
    ResourceRequest r = Resources.LoadAsync<T>(name);
    yield return r;
    //等待加载完之后回调
    if (r.asset is GameObject)

        callback(GameObject.Instantiate(r.asset) as T);
    else
        callback(r.asset as T);
}

//为什么这里要用Unity委托,因为实例化语句执行后我们要获得实例化的返回值。但在协同函数中,无法实现,所以需要一个有返回值的委托代替

}文章来源地址https://www.toymoban.com/news/detail-734263.html


+ 加载测试

```csharp
    void Start()
    {
        //同步加载
        ResourceManager.GetInstance().Load<GameObject>("asda");
        //异步加载
        ResourceManager.GetInstance().LoadAsync<GameObject>("asdsa",(aa)=>
        {
            print(aa.name); 
        });
    }

到了这里,关于【Unity程序技巧】 资源加载管理器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity基础笔记(7)—— 资源管理

    一、资源导入和导出 资源导入:将打包好的 unitypackage 文件直接拖拽至窗口中,Unity 会自动解析包,再点击 import 即可导入资源。 资源导出:右键点击要导出的资源文件夹,点击 export 导出资源。预制体身上自带的材质会随着预制体一并导出。 二、预制体实例化 游戏中大多数

    2024年02月16日
    浏览(42)
  • Unity基础操作-包与资源管理

     不再像以前一样,会在Unity编辑器内置的浏览器中来打开Unity的网站 并在提示窗口中有给出来解释,是说为了提升编辑器的性能. 并提供了直接到浏览器中访问资源商店的访问链接(Search Online)       因Unity3D编辑器中文包始终未全部完成翻译,具体百度翻译的中英对照情况如下

    2024年02月13日
    浏览(43)
  • 【Unity程序技巧】Unity中单例模式管理器

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 菜鸟教程 “单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一

    2024年02月08日
    浏览(39)
  • 【Unity程序技巧】异步保险箱管理器

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 List泛型类 Dictionary泛型类 hashtable的遍历 和 Dictionary 遍历API的区别对比 + 1.知识点 2.特点 由两个部分组成:保险箱数据 和

    2024年02月08日
    浏览(41)
  • Unity 场景加载和资源加载

    一个游戏往往都是由很多场景组成的,例如会有主界面场景、战斗场景…等,不同的场景也是由若干的资源组合而成,在游戏的制作过程中,场景和资源的加载是不可或缺的。不管是场景还是资源都会涉及到加载的问题,在什么时候进行场景或资源的加载?场景的加载和资源

    2024年02月04日
    浏览(39)
  • Unity中资源异步加载

            Unity作为一款优秀的游戏引擎,广泛应用于游戏制作领域。在游戏的开发过程中,资源加载的效率和流畅度尤为重要。对于较大的资源文件,同步加载方式可能会导致游戏卡顿、延迟等问题。因此,采用异步加载的方法可以提高游戏的效率和用户体验。 本篇博客将

    2024年02月06日
    浏览(58)
  • Unity资源加载方式

    Resources:逻辑资源目录,这个目录中的资源会 打入到包 中, 不允许热更 。在打包时会被压缩和加密。 加载方式:Resources.Load(常用) 、 AssetDatabase.LoadAssetAtPath等加载接口 StreamingAssets:Raw资源目录,这个目录中的资源也会 打入到包 中,且允许程序通过Application.streamingAsse

    2023年04月09日
    浏览(38)
  • 【Unity技巧】跳过Unity启动屏/Logo/加载页

    Unity启动Logo让人非常不爽,因为展示unity logo非常拖沓, 延缓了打开游戏的时间 翻了一下Unity API文档,Unity居然真的有SplashScreen.Stop() 停止启动屏的API 只需要写个静态方法,使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)] 即在在显示启动画面之前调用这个静态方

    2024年02月08日
    浏览(34)
  • Unity使用 Addressables 预加载所有资源,提现加载资源,发布webgl加载缓慢问题

    Addressables 我也是刚接触,知道的不是很多,基本的用法还是知道一些的 1 .在Window–Package Manager里找到Addressables进行安装   2.选择资源,点击Assets中的一个资源,在Inspector面板上就会出现一个勾选Assressable,也就是是否加入资源打包的分组,和AssetBundle分组是一个性质。选上以

    2023年04月08日
    浏览(46)
  • 05_Unity动态加载图片资源

    本文归纳了Unity中加载图片资源的常用方法,包括url和本地路径的加载。 在工具类中封装如下方法: 一般是放在单例中,如:GameManager 创建一个Image物体 在本地存放一张图片,Guide1.png 放置在: Resources/Image/Guide1.png 路径下 在物体上挂接一个测试脚本 执行前: 执行后: 还是刚

    2024年02月05日
    浏览(116)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包