Database 将服务器中的obj文件放入场景中

Database 将服务器中的obj文件放入场景中,database,unity3d,server,Database,Unity3d,Server,我在服务器中有一个obj文件,我想下载它并通过代码将其导入到我的场景中,我该怎么做?我刚刚开始使用unity,但根据我目前的研究,不可能实现,你可以在unity中加载你的obj,将其转换为资产包,上传到你的服务器,然后下载并根据需要将其实例化到您的应用程序中 您可以使用中的“objImporter.cs”在运行时加载obj文件 要从url加载obj,请使用以下代码: void LoadObjFromUrl(string url){ //you can do more test he

我在服务器中有一个obj文件,我想下载它并通过代码将其导入到我的场景中,我该怎么做?

我刚刚开始使用unity,但根据我目前的研究,不可能实现,你可以在unity中加载你的obj,将其转换为资产包,上传到你的服务器,然后下载并根据需要将其实例化到您的应用程序中

您可以使用中的“objImporter.cs”在运行时加载obj文件

要从url加载obj,请使用以下代码:

void LoadObjFromUrl(string url){
    //you can do more test here to check if the url correct
    if (String.IsNullOrEmpty(url)) {
        return;
    }

    StartCoroutine(LoadObjFromUrlCoroutine(url));
}


IEnumerator LoadObjFromUrlCoroutine(string url) {
    Mesh mesh;

        UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(filePath);
        yield return www.SendWebRequest();

        mesh = ObjImporter.Instance.ImportFile(www.downloadHandler.text, true);

    GameObject obj = new GameObject();
    MeshFilter meshFilter = obj.AddComponent<MeshFilter>();
    MeshRenderer meshRenderer = obj.AddComponent<MeshRenderer>();
    meshFilter.mesh = mesh;

    //add a BoxCollider to the loaded object
    obj.AddComponent<BoxCollider>();

    //this method will set the scale of the loaded model equale to 1 unity units (like the size of the default unity cube)
    ConvertMeshToUnityScale(obj,1);

}

public void ConvertMeshToUnityScale(GameObject theGameObject, float newSize,string axis="y") {

    Renderer renderer = theGameObject.GetComponent<Renderer>();

    float size = renderer.bounds.size.y;
    if (axis.ToLower() == "x") {
        size = renderer.bounds.size.x;
    } else if (axis.ToLower() == "z") {
        size = renderer.bounds.size.z;
    }

    Vector3 rescale = theGameObject.transform.localScale;

    rescale.x = newSize * rescale.x / size;
    rescale.y = newSize * rescale.y / size;
    rescale.z = newSize * rescale.z / size;

    theGameObject.transform.localScale = rescale;

}
void LoadObjFromUrl(字符串url){
//您可以在此处进行更多测试,以检查url是否正确
if(String.IsNullOrEmpty(url)){
返回;
}
Start例程(LoadObjFromUrlCoroutine(url));
}
IEnumerator LoadObjFromUrlCoroutine(字符串url){
网目;
UnityEngine.Networking.UnityWebRequest www=UnityEngine.Networking.UnityWebRequest.Get(文件路径);
返回www.SendWebRequest();
mesh=ObjImporter.Instance.ImportFile(www.downloadHandler.text,true);
GameObject obj=新GameObject();
MeshFilter MeshFilter=obj.AddComponent();
MeshRenderer MeshRenderer=obj.AddComponent();
meshFilter.mesh=网格;
//将BoxCollider添加到加载的对象
obj.AddComponent();
//此方法将加载模型的比例设置为等于1个单位(与默认单位立方体的大小类似)
转换网格单位标度(obj,1);
}
public void ConvertMeshToUnityScale(游戏对象theGameObject,float newSize,字符串axis=“y”){
Renderer Renderer=theGameObject.GetComponent();
float size=renderer.bounds.size.y;
如果(轴ToLower()=“x”){
size=renderer.bounds.size.x;
}否则如果(轴ToLower()=“z”){
size=renderer.bounds.size.z;
}
Vector3重新缩放=GameObject.transform.localScale;
rescale.x=新闻大小*rescale.x/大小;
rescale.y=新闻大小*rescale.y/大小;
rescale.z=新闻大小*rescale.z/大小;
gameobject.transform.localScale=重新缩放;
}