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

【Unity服务器01】之【AssetBundle上传加载u3d模型】

首先打开一个项目导入一个简单的场景

导入怪物资源,

AssetBundle知识点:

1.指定资源的AssetBundle属性标签

    (1)找到AssetBundle属性标签

(2)A标签 代表:资源目录(决定打包之后在哪个文件夹里面)

         B标签 代表:后缀   

(3)设置AB标签

          

AssetBundle的属性标签 = 资源目录 + 后缀

2.构建AssetBunde包(AB包)

3.上传到服务器

4.加载使用

接下来创建一个Editor包

然后将创建的Scripts脚本放在Editor包里

using UnityEditor;
using UnityEngine;
using UnityEngine.Windows;
public class CreateAssetBundles : MonoBehaviour{
    //添加编辑器菜单
    [MenuItem("Tools/Build AssetBundles")]
    static void BuildAllAssetBundles() {
        //打包输出路径,没有根目录,是一个相对路径
        string _path = "AssetBundles";
        //判断输出路径是否存在 不存在就创建
        if(!Directory.Exists(_path))
            Directory.CreateDirectory(_path);
        BuildPipeline.BuildAssetBundles(_path, BuildAssetBundleOptions.None,
           BuildTarget.StandaloneWindows64);
    }
    //BuildAssetBundOptions.None 使用LZMA算法压缩
    //特点:压缩包 但是加载时间会更长
    //使用之前需要解压缩 一旦被解压 会使用LZ4算法重新压缩 
    //在下载时可以使用LZMA算法 一旦下载之后 它会使用LZ4算法保存在本地上

    //BuildAssetBundleOptions.UncompressedAssetBundle 不使用算法压缩
    //特点:包大 加载快

    //BuildAssetBundleOptions.ChunkBasedCompression : 使用LZ4算法压缩 基于Block,资源
    //分块,一个块一个小包。特点:压缩率没有LZMA那么高,但是我们可以加载指定
    //资源而不用全部解压缩,加载速度媲美不压缩,而且文件比不压缩的小
}

此时工具栏里多了Tools方便我们加载怪物模型

点击子选项 构建AssetBundles

接下来在Scripts包下创建脚本

其中目录文件在

我们就会看见构建的AssetBundles

双击进去后

复制路径

添加模型名称

此时已找到路径资源

接下来利用代码加载本地文件中的怪物模型

using UnityEngine;

public class LoadAssetsFromFile : MonoBehaviour{
    void Start(){
        AssetBundle ab_Monster = AssetBundle.LoadFromFile("AssetBundles/monster/one.u3dmodel");
        GameObject monster01 = ab_Monster.LoadAsset<GameObject>("Monster01");
        Instantiate(monster01);
    }
}
最后删除掉Unity项目中的所有怪物预制体,目的是从本地文件中加载

创建一个空物体

挂载本地加载模型代码

运行前

运行后,成功从本地文件加载模型

此文章从本地文件加载unity项目模型,下一篇文章,从云数据库加载。

相关文章:

  • 前端 三维空间笔记
  • Java中的NIO编程实践精华
  • 程序的“通用性”和“过度设计”困境
  • zookeeper学习、配置文件参数详解
  • SSM旅游系统
  • WDF驱动开发-WDF总线枚举(一)
  • obsidian中用check list 打造待办清单
  • 在阿里云使用Docker部署MySQL服务,并且通过IDEA进行连接
  • 软件介绍—Fluent Reader (RSS阅读器)
  • SparkSQL的分布式执行引擎-Thrift服务:学习总结(第七天)
  • Java学习 - 网络TCP,UDP协议讲解
  • 基于uni-app和图鸟UI开发上门服务小程序
  • linux库函数 gettimeofday() localtime 使用demo
  • 达梦8 通过日志解释数据守护系统的关停顺序
  • 【Java算法】滑动窗口 下
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Bootstrap JS插件Alert源码分析
  • CSS实用技巧干货
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • 复习Javascript专题(四):js中的深浅拷贝
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 系统认识JavaScript正则表达式
  • 一起参Ember.js讨论、问答社区。
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • #includecmath
  • (23)Linux的软硬连接
  • (c语言)strcpy函数用法
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转载)Google Chrome调试JS
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net(C#)中String.Format如何使用
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net6 Api Swagger配置
  • .NET6实现破解Modbus poll点表配置文件
  • .net对接阿里云CSB服务
  • .Net多线程总结
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @Autowired自动装配
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [.NET]桃源网络硬盘 v7.4
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [ESP32 IDF]web server
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [iOS]GCD(一)
  • [LeetCode] 196. 删除重复的电子邮箱