Поместите файл obj с сервера в сцену Unity - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть файл obj на сервере, и я хочу загрузить его и импортировать в мою сцену по коду, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы можете использовать "objImporter.cs" из unity wiki для загрузки файла obj во время выполнения.

Чтобы загрузить объект из URL, используйте этот код:

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;

}
0 голосов
/ 24 апреля 2018

Я только начинаю в единстве, но, согласно моим исследованиям, пока что это невозможно, вы можете загрузить свой объект в Unity, преобразовать его в Asset Bundle, загрузить его на свой сервер и затем загрузитьи создайте его в своем приложении по мере необходимости

https://unity3d.com/es/learn/tutorials/topics/scripting/assetbundles-and-assetbundle-manager

https://www.youtube.com/watch?v=GHOu7EJKgkE

https://www.youtube.com/watch?v=qv7KYpxFQxs

https://www.youtube.com/watch?v=Ghb3f6dwU5E

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...