当前位置: 首页 > article >正文

Addressable学习

AssetsBundle是Unity的资源管理机制,将资源打包到AssetsBundle资源包并提供接口能从ab包里面加载资源出来。有了这个机制以后,我们要做资源管理,还需要做:

  a: 根据项目需求,编写编辑器扩展,提供指定资源打入对应bundle包工具策略;

  b: 根据项目的需求,资源包的依赖,提供ab包资源加载与释放的策略;

  c: 根据项目版本管理,更新需求,提供ab包的更新与增量下载策略;

  d: 项目资源加密的策略;

上面出现了两个频繁的词汇”机制,策略”, 机制提供的功能給上层使用,策略是基于机制,来实现具体怎么用。AssetsBundle 属于底层的资源加载与管理的机制。而我们框架中做的编辑器扩展,资源管理是基于机制的使用策略

 

Unity引擎考虑到上面a, b, c, d等策略对普通开发者实现有难度,于是帮我们实现了Addressable,它基于AssetsBundle机制, 实现的上述a, b, c, d等功能的一整套资源管理策略。没有错,Addressable是基于AssetsBundle的

 

AssetsBundle 是机制,Addressable是具体实现的一种资源管理的策略,AssetsBundle做资源管理并没有过时。Addressable是一种资源管理策略,如果策略不满足你项目的需求,你也可以用原来自己开发的基于AssetsBundle的资源管理策略而不用Addressable。比如你对加密有自己特殊的要求,比如你觉得Addressable还没有之前项目扩展的资源管理策略符合项目需求,你就可以不使用Addressable。

using UnityEngine.AddressableAssets;
using DG.Tweening;

public AssetReference baseCube;      

  Addressables.LoadAssetAsync<GameObject>("Assets/Prefabs/New Folder/Capsule.prefab").Completed += (handle) =>
        {
            GameObject prefab = handle.Result;
            GameObject boxObj = Instantiate(prefab);
            boxObj.transform.DOPath(new Vector3[] { Vector3.zero, -Vector3.one * 10, Vector3.zero }, 1f, PathType.CatmullRom);
        };

        //baseCube.InstantiateAsync().Completed += (handle) =>
        //{
        //    GameObject obxPrefabs = handle.Result;
        //    //GameObject cubObj = Instantiate(obxPrefabs);

        //    obxPrefabs.transform.DOPath(new Vector3[] { Vector3.zero, Vector3.one * 10, Vector3.zero }, 1f, PathType.CatmullRom);
        //};

学习自:Unity Addressable资源管理方案实战详解 - rain4414 - 博客园

跳过启动画面

#if !UNITY_EDITOR
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Scripting;

[Preserve]
public class SkipUnityLogo
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
    private static void BeforeSplashScreen()
    {
        System.Threading.Tasks.Task.Run(() => 
        {
            SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate);
        });
    }
}
#endif


using UnityEngine;
using UnityEngine.Rendering;

public abstract class SkipSplashScreen
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
    private static void Skip()
    {
        System.Threading.Tasks.Task.Run(AsyncSkip);
    }


    private static void AsyncSkip()
    {
        SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate);
    }
}


http://www.kler.cn/a/516992.html

相关文章:

  • Rabbitmq高级特性之消费方确认
  • Hive之加载csv格式数据到hive
  • 使用HTML5 Canvas 实现呼吸粒子球动画效果的原理
  • 2024年度总结
  • 方便快捷的软件展示平台查找和下载所需的软件
  • mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用
  • 【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库
  • Amazon Redshift实用命令语句
  • docker启动服务占用172.18网段怎么改成其他网段?和网桥有关吗?或者怎么改docker-compose启动用的yml文件
  • 理解深度学习pytorch框架中的线性层
  • AWS 签名算法SigV4 的python实现
  • Oracle Agile PLM Web Service Java示例测试开发(一)环境环境、准备说明
  • easyexcel读取写入excel easyexceldemo
  • 梯度下降法 (Gradient Descent) 算法详解及案例分析
  • 3、C#基于.net framework的应用开发实战编程 - 实现(三、二) - 编程手把手系列文章...
  • 如何高效、优雅地利用正则表达式
  • EtherCAT介绍和总线结构
  • 一文了解二叉树的遍历和线索二叉树
  • 微服务学习-SkyWalking 实时追踪服务链路
  • CTFSHOW-WEB入门-文件包含78-81
  • Spring WebFlux 和 Spring MVC 的主要区别是什么?
  • springboot使用ssl连接elasticsearch
  • 【开源免费】基于SpringBoot+Vue.JS校园失物招领系统(JAVA毕业设计)
  • FastExcel导入Excel详细步骤
  • MyBatis-Plus之常用注解
  • Java定时任务实现方案(二)——ScheduledExecutorService