Database 将服务器中的obj文件放入场景中
我在服务器中有一个obj文件,我想下载它并通过代码将其导入到我的场景中,我该怎么做?我刚刚开始使用unity,但根据我目前的研究,不可能实现,你可以在unity中加载你的obj,将其转换为资产包,上传到你的服务器,然后下载并根据需要将其实例化到您的应用程序中 您可以使用中的“objImporter.cs”在运行时加载obj文件 要从url加载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
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=重新缩放;
}