您当前的位置: 首页 >  unity

鱼儿-1226

暂无认证

  • 0浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity外部动态加载glTF glb模型

鱼儿-1226 发布时间:2022-07-29 11:27:05 ,浏览量:0

下载

GLTFUtility插件下载Newtonsoft.Json-for-Unity 下载 :插件需要此dll

使用

using Siccity.GLTFUtility;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// 
/// 加载GLB模型单例
/// 
public class GLTFUtilityScript
{
    private static GLTFUtilityScript instance;
    public static GLTFUtilityScript Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new GLTFUtilityScript();
            }
            return instance;
        }

    }

    Action action;
    public GameObject obj;
    bool isCreate = true;

    /// 
    /// 同步加载 gltf and glb (不建议使用)
    /// 
    /// 路径
    /// 回调函数
    public void ImportGLTF(string filepath, Action action)
    {
        UnloadAndDestroy(obj);
        obj = Importer.LoadFromFile(filepath);
        action = this.action;
    }

    /// 
    /// 异步加载 gltf and glb   
    /// 
    /// 路径
    /// 回调函数
    public void ImportGLTFAsync(string filepath, Action action)
    {
        if (!isCreate) return;
        isCreate = false;
        UnloadAndDestroy(obj);
        Importer.LoadFromFileAsync(filepath, new ImportSettings(), OnFinishAsync);
        action = this.action;
    }

    public void ImportGLTFAsync(string filepath)
    {
        if (!isCreate) return;
        isCreate = false;
        UnloadAndDestroy(obj);
        Importer.LoadFromFileAsync(filepath, new ImportSettings(), OnFinishAsync);
    }

    public void ImportGLTAsync()
    {
        obj = new GameObject ();
    }

    /// 
    /// 加载完后的回调
    /// 
    /// 加载出来的物体
    /// 
    void OnFinishAsync(GameObject result, AnimationClip[] clip)
    {
        obj = result;
        isCreate = true;
        Debug.Log("Finished importing " + result.name);
        if (action != null)
            action();
    }

    /// 
    /// 删除卸载 所有加载过的模型 清除缓存
    /// 
    public void UnloadAndDestroy(GameObject obj)
    {
        if (obj != null)
        {
            GameObject.Destroy(obj);
        }
        Resources.UnloadUnusedAssets();
    }

    / 
    / 删除卸载 所有加载过的模型 清除缓存
    / 
    //public void UnloadAndDestroyALL()
    //{
    //    Resources.UnloadUnusedAssets();

    //}

}

问题

unity 直接加载没问题 打包会加载不出来 报错:着色器

需要把插件里的shader 放入unity 的图形设置里

关注
打赏
1604459285
查看更多评论
立即登录/注册

微信扫码登录

0.0405s