Unity(2022.3.38LTS) - 导入导出资源和 AssetBundles( AssetBundles变体)

目录

一. 导入导出资源

常用的资源类型

导入

1.选择资源,选择导入新资产

2.鼠标左键拖到unity的项目面板文件夹内,即可

3.导入包

导出

二. AssetBundles(资产捆绑包)

1.创建AssetBundles资源

2.然后创建Asset文件夹

3.加载 AssetBundle 和资产

本地资源加载

首先是没变体的情况

变体的情况下

网络加载

三. 总结



一. 导入导出资源

在 Unity 中,导入和导出资源是非常重要的操作,它们可以帮助你在项目中使用各种外部资源,并将项目中的资源输出到其他平台或工具中.

常用的资源类型

  • Unity 可以导入多种类型的资源,包括但不限于:
    • 3D 模型:如.fbx、.obj、.dae 等格式的模型文件。
    • 纹理:如.png、.jpg、.tga 等格式的图像文件。
    • 音频:如.wav、.mp3、.ogg 等格式的音频文件。
    • 脚本:如.cs、.js、.boo 等格式的脚本文件。
    • 其他资源:如字体文件、动画文件、材质文件等。

导入

1.选择资源,选择导入新资产

然后在弹出的文件夹选择即可.

2.鼠标左键拖到unity的项目面板文件夹内,即可

3.导入包

后缀名是 .unitypackage的文件

也可以直接拖进去,或者点击资源->导入包

就可以显示包中的资源,选择相关的导入即可.

导出

也可以把自己的资源导出一个包,

点击 资源 ->到处包.

把需要导出的资源,前面的框选中.

点击导出即可.

二. AssetBundles(资产捆绑包)

在 Unity 中,AssetBundles(资产捆绑包)是一种将多个资源打包成一个单独文件的技术,它在游戏开发中具有重要的作用

作用:

  1. 资源管理和优化

    • AssetBundles 允许你将游戏中的资源(如模型、纹理、音频、脚本等)分组打包,以便更高效地管理和加载资源。通过将相关的资源打包在一起,可以减少资源的加载时间和内存占用。
    • 你可以根据游戏的需求,将不同类型的资源打包成不同的 AssetBundles,例如将所有的角色模型打包成一个 AssetBundle,将所有的场景道具打包成另一个 AssetBundle。这样可以在需要时只加载特定的 AssetBundle,避免加载不必要的资源。
  2. 热更新和动态内容加载

    • AssetBundles 可以用于实现游戏的热更新功能。你可以将新的资源打包成 AssetBundle,并在游戏运行时下载和加载这些 AssetBundle,从而实现对游戏内容的更新,而无需重新发布整个游戏。
    • 此外,AssetBundles 还可以用于动态加载游戏中的内容,例如在游戏中根据玩家的选择加载不同的关卡、角色或道具。这可以增加游戏的灵活性和可玩性。
  3. 跨平台部署

    • AssetBundles 可以在不同的平台上使用相同的资源打包方式,从而实现跨平台部署。你可以将资源打包成 AssetBundle,并在不同的平台上加载这些 AssetBundle,确保游戏在不同平台上的资源一致性。
    • 同时,AssetBundles 还可以根据不同平台的特点进行优化,例如在移动平台上使用压缩格式的纹理和模型,以减少资源的大小和加载时间。

1.创建AssetBundles资源

选择文件,在检查器底部

输入名字和变体名即可

2.然后创建Asset文件夹

创建一个Editor.需要在这个文件夹下写编辑器功能脚本.

创建代码文件

代码如下

using UnityEditor;
using System.IO;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string assetBundleDirectory = "Assets/AssetBundles";
        if (!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory,
                                        BuildAssetBundleOptions.None,
                                        BuildTarget.StandaloneWindows);
    }
}

点击资源按钮

找到我们新加的按钮,点击按钮

自动创建新的文件夹,并识别到我们创建的资源.

3.加载 AssetBundle 和资产

本地资源加载

使用 AssetBundles.LoadFromFile API

首先是没变体的情况

首先导入

var myLoadedAssetBundle=AssetBundle.LoadFromFile(Path.Combine(Application.dataPath, "AssetBundles\\material"));

然后加载

myLoadedAssetBundle.LoadAsset<Material>("新建材质 1");

全部代码

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class LoadBundles : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        var myLoadedAssetBundle
            = AssetBundle.LoadFromFile(Path.Combine(Application.dataPath, "AssetBundles\\material"));
        if (myLoadedAssetBundle == null)
        {
            Debug.Log("Failed to load AssetBundle!");
            return;
        }

        transform.GetComponent<MeshRenderer>().material = myLoadedAssetBundle.LoadAsset<Material>("新建材质 1");
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

效果

变体的情况下

只需要修改一个地方

比如变体名为

这里就要修改为

其余用法一样

网络加载

IEnumerator InstantiateObject()
{
    string url = "file:///" + Application.dataPath + "/AssetBundles/" + assetBundleName;        
    var request 
        = UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(url, 0);
    yield return request.Send();
    AssetBundle bundle = UnityEngine.Networking.DownloadHandlerAssetBundle.GetContent(request);
    GameObject cube = bundle.LoadAsset<GameObject>("Cube");
    GameObject sprite = bundle.LoadAsset<GameObject>("Sprite");
    Instantiate(cube);
    Instantiate(sprite);
}

三. 总结

本文介绍了导入导出资源,和打包assetbundles,做个了解就行.

  • 22
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的校园二手书交易平台,源码+数据库+毕业论文+视频演示 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的校园二手书交易平台实现了图书信息查询。系统用到了关系型数据库中MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让校园二手书交易平台更能从理念走到现实,确确实实的让人们提升信息处理效率。 关键字:信息管理,时效性,安全性,MySql;Spring Boot
Unity 2022.3引入了一些新的导航功能,以帮助开发者更方便地为游戏添加导航系统。新版本中的导航系统改进了性能和功能,使其更加强大和灵活。 首先,Unity 2022.3引入了实时路径搜索功能。该功能可以根据场景中的物体位置和碰撞体等信息,在实时场景中进行路径搜索。这意味着开发者可以在游戏运行时动态计算角色或其他游戏实体的路径。这一功能对于实时策略游戏或动态变化的游戏环境非常有用。 其次,新版本的导航系统还改进了自动化的对话框生成功能。开发者可以通过简单的设置,自动生成适应场景的对话框来实现导航指示。这个功能可以大大减轻开发者的负担,并提高游戏中导航的质量。 此外,Unity 2022.3还提供了更多的导航算法选项。不同的游戏场景可能需要不同的导航算法来平衡效率和精度。新版本中的导航系统提供了多种算法选项,让开发者能够根据具体需求选择合适的算法。 最后,Unity 2022.3导航系统的改进还包括了对2D游戏的支持。早期的导航系统主要面向3D游戏,但新版本中加入了对2D游戏的导航支持。这使得开发者能够更方便地为2D游戏创建导航系统,为玩家提供更好的游戏体验。 总的来说,Unity 2022.3版本的导航系统带来了更多强大和灵活的功能,包括实时路径搜索、自动对话框生成、多种导航算法选项以及对2D游戏的支持。这些新功能使得开发者在为游戏添加导航系统时更加便捷,为玩家提供更好的游戏体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一然明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值