Unity动态加载外部服务器上的FBX模型

这篇具有很好参考价值的文章主要介绍了Unity动态加载外部服务器上的FBX模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

去年某项目需要从后端服务器上加载FBX模型,但是整个项目中只有很少的地方需要用到动态模型替换,并且项目交付后需要外行人员也能轻松上手更换需要动态加载的模型,所以需要实现一个简单的模型打包和动态模型加载功能。

FBX模型打包为.assetbundle文件

1.创建一个新的脚本,编写如下代码

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class ExportAssetBundles : MonoBehaviour
{
    //在Unity编辑器中添加菜单
    [MenuItem("AssetBundle / 打包选中的文件")]
    static void Export()
    {
        // 打开保存面板,获得用户选择的路径
        string path = EditorUtility.SaveFilePanel("保存文件", "", "模型", "assetbundle");
        if (path.Length != 0)
        {
            // 选择的要保存的对象  
            Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
            //打包 成AssetBundle
            BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, BuildTarget.StandaloneWindows);
        }
    }
}

2.回到unity中,左上角工具栏出现AssetBundle,点击AssetBundle,然后选中你需要打包的FBX模型文件,点击“打包选中文件”,选择保存路径即可。(需要注意的是,模型文件的名称应与上图代码中13行的第三个参数相同)

Unity动态加载外部服务器上的FBX模型

3.打包FBX模型之后将其放入能够访问并下载的服务器

FBX模型在线替换的具体实现

1.在需要加载模型的地方编写如下代码(代码中第13行为服务器上准备好的.assetbundle文件)

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

public class GameManager : MonoBehaviour
{
    private void Start()
    {
        Screen.SetResolution(3840, 2160, false);
        StartCoroutine(LoadModel2("http://localhost//模型.assetbundle"));
    }
    IEnumerator LoadModel2(string url)
    {
        var uwr = UnityWebRequestAssetBundle.GetAssetBundle(url);
        yield return uwr.SendWebRequest();
        // Get an asset from the bundle and instantiate it.
        AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr);
        var loadAsset = bundle.LoadAssetAsync<GameObject>("Assets/Art/Model/模型.FBX");
        yield return loadAsset;
        Instantiate(loadAsset.asset,transform);
        var mx = transform.Find("模型(Clone)");
        mx.transform.localPosition = new Vector3(0,0,0);
        mx.transform.localEulerAngles = Vector3.zero;
    }
}

2.运行上面代码即可实现动态加载FBX模型(请注意在打包项目之前应先将第一步的代码注释,否则将打包失败)文章来源地址https://www.toymoban.com/news/detail-509768.html

到了这里,关于Unity动态加载外部服务器上的FBX模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于linux下的高并发服务器开发(第一章)- 解决动态库加载失败的问题1.8

    1、获取当前动态库所在路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nowcoder/Linux/lesson06/library/lib  ldd main ./main (1)先进入到~目录下  (2)在此目录下输入ll命令,打印内容如下,我们可以看到有一个.bashrc  (3)配置.bashrc文件,命令vim .bashrc  (4)shift+g,跳到最后一行,按住i键

    2024年02月16日
    浏览(35)
  • Unity 从服务器加载AssetBundle资源写入本地内存,并将下载保存的AB资源从本地内存加载至场景

    AB资源打包后有一个【目录文件】AssetBundle,他保存了所有AB资源的路径与名称, 通过aLLAssetBundleURL链接路径 组拼 从【目录文件】获得的AB资源的名字,然后再协程方法内编写相关代码,从而实现从服务器加载资源的功能。详细见代码。

    2024年02月13日
    浏览(32)
  • Three.js加载外部glb,fbx,gltf,obj 模型文件

    vue3使用Three.js加载外部模型文件 1.安装Three.js 2.新建一个renderModel.js 用于处理Three.js相关逻辑 3.modelPage.vue 中使用页面 6.效果图:

    2024年02月15日
    浏览(32)
  • 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )

    Unity 中使用的 3D 模型格式为 FBX , 使用如下建模软件 可制作该类型模型 : 3Dmax Maya ZBrush Cinema4D Blender 建模完成后 , 将 3D 模型导出为 FBX ( .fbx ) 格式 即可在 Unity 中使用 ; 在 Project 文件窗口 中的 Asstes 目录 下 , 创建一个模型目录 Models , 将 模型文件直接从文件系统中拖到该目录中

    2023年04月15日
    浏览(49)
  • Linux上的NFS服务器搭建

    目录 一.服务器端搭建 二.客户端搭建 Shareserver NFS服务器: 1:给NFS服务器一个ip地址 2:修改主机名 3:修改主机映射关系 4:测试联通性 5:查询是否有rpcbind及nfs-utils,若无则安装 6:查询是否有rpcbind及nfs-utils状态,若关闭则开启 7:关闭防火墙 8:创建共享目录/share,并在其共享目录中

    2024年02月07日
    浏览(40)
  • 访问服务器上的 Jupyter Notebook

    Jupyter 安装和基本使用方法可见: https://blog.csdn.net/lovechris00/article/details/123458990 1、生成秘钥 输入秘钥后,将生成秘钥文件,进入文件,复制那一串加密后de字符 2、修改配置 生成配置文件 我的位于 /home/xx/.jupyter/jupyter_notebook_config.py 在配置文件添加以下内容 注意,ip 不要设置

    2024年01月24日
    浏览(43)
  • Git 服务器上的 LFS 下载

    以llama为例: https://huggingface.co/meta-llama/Llama-2-7b-hf 报错 GIT_LFS_SKIP_SMUDGE=0 报错 注意 Not in a Git repository. 报错,查看: 因此: 使用 git lfs fetch ,报错: 原因: 对象不存在:指定的对象在远程仓库中不存在。这可能是因为对象已被删除、重命名或移动。请确保你正在尝试获取正

    2024年02月04日
    浏览(40)
  • 服务器上的Notebook在本地运行

    3090TI的服务器,用的是Ubuntu系统,在使用的时候,如何让服务器资源在本地的JupyterNotebook运行呢? 目录 一、在3090TI服务器上指定一个特定的访问端口 二、本地端口配置 三、本地JupyterNotebook访问服务器 一、在3090TI服务器上指定一个特定的访问端口 1. 在服务器上指定一个特定

    2024年02月16日
    浏览(40)
  • 如何将阿里云旧服务器上的数据转移到新服务器上

    旧的阿里云服务器上有5个网站,放在phpstudyPro中,包含MySQL数据库,大概有60个G,最开始我的想法是将phpstudy整个文件夹下载下来,然后放到新的服务器中,但是我感觉实现起来不太现实,首先先把60G数据从旧的服务器上下载下来,再放到新的服务器上,太麻烦也太复杂了。放

    2024年02月12日
    浏览(51)
  • 访问服务器上的静态资源(图片等)

    目录 1、在服务器上安装tomcat 2、将图片上传到服务器上 3、在tomcat中进行配置 添加代码(docBase是放图片的文件夹,path是映射地址) 4、访问路径 安装教程在另一篇博客有记录 http://t.csdn.cn/J34KC 使用宝塔面板或者WinSCP都可以,上传到服务器文件夹中。  记住当前目录 进入到安

    2024年02月09日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包