• unity导出.obj模型文件

    2017-11-09 19:50:36
    unity导出.obj模型文件最近使用realworldterrain生成真实地形遇到一个问题,就是该地形的坐标轴没有在中心位置,这样在旋转缩放操作时候就有各种问题,效果不好,于是想到先导出该地形为obj文件,然后在Max中修改其...

    unity导出.obj模型文件

    最近使用realworldterrain生成真实地形遇到一个问题,就是该地形的坐标轴没有在中心位置,这样在旋转缩放操作时候就有各种问题,效果不好,于是想到先导出该地形为obj文件,然后在Max中修改其坐标轴位置。

    一、将地形导出为obj文件

    在unity中新建js脚本ExportTerrain.js,且必须放在Assets文件夹下的Editor文件夹中。(js文件不要用vs编译,要用自带的mono编译器。)

    import System.IO;
        import System.Text;
    
        enum SaveFormat {Triangles, Quads}
        enum SaveResolution {Full, Half, Quarter, Eighth, Sixteenth}
    
        class ExportTerrain extends EditorWindow 
        {
            var saveFormat = SaveFormat.Triangles;
            var saveResolution = SaveResolution.Half;
            static var terrain : TerrainData;
            static var terrainPos : Vector3;
    
            var tCount : int;
            var counter : int;
            var totalCount : int;
    
            @MenuItem ("Terrain/Export To Obj...")
            static function Init () 
            {
                terrain = null;
            var terrainObject : Terrain = Selection.activeObject as Terrain;
                if (!terrainObject) 
                {
                terrainObject = Terrain.activeTerrain;
                }
                if (terrainObject) 
                {
                    terrain = terrainObject.terrainData;
                    terrainPos = terrainObject.transform.position;
                }
                EditorWindow.GetWindow(ExportTerrain).Show();
            }
    
            function OnGUI () 
            {
            if (!terrain) 
            {
                    GUILayout.Label("No terrain found");
                    if (GUILayout.Button("Cancel")) 
                    {
                        EditorWindow.GetWindow(ExportTerrain).Close();
                    }
                return;
             }
                saveFormat = EditorGUILayout.EnumPopup("Export Format", saveFormat);
            saveResolution = EditorGUILayout.EnumPopup("Resolution", saveResolution);
    
                if (GUILayout.Button("Export")) 
                {
                    Export();
                }
            }
    
            function Export () 
            {
                var fileName = EditorUtility.SaveFilePanel("Export .obj file", "", "Terrain", "obj");
            var w = terrain.heightmapWidth;
                var h = terrain.heightmapHeight;
                var meshScale = terrain.size;
                var tRes = Mathf.Pow(2, parseInt(saveResolution));
                meshScale = Vector3(meshScale.x/(w-1)*tRes, meshScale.y, meshScale.z/(h-1)*tRes);
                var uvScale = Vector2(1.0/(w-1), 1.0/(h-1));
                var tData = terrain.GetHeights(0, 0, w, h);
    
                w = (w-1) / tRes + 1;
                h = (h-1) / tRes + 1;
            var tVertices = new Vector3[w * h];
                var tUV = new Vector2[w * h];
                if (saveFormat == SaveFormat.Triangles) 
                {
                    var tPolys = new int[(w-1) * (h-1) * 6];
                }
                else 
                {
                tPolys = new int[(w-1) * (h-1) * 4];
                }
    
                // Build vertices and UVs
                for (y = 0; y < h; y++) 
                {
                    for (x = 0; x < w; x++) 
                    {
                        tVertices[y*w + x] = Vector3.Scale(meshScale, Vector3(x, tData[x*tRes,y*tRes], y)) + terrainPos;
                        tUV[y*w + x] = Vector2.Scale(Vector2(x*tRes, y*tRes), uvScale);
                    }
                }
    
            var index = 0;
                if (saveFormat == SaveFormat.Triangles) 
                {
                    // Build triangle indices: 3 indices into vertex array for each triangle
                    for (y = 0; y < h-1; y++) 
                    {
                        for (x = 0; x < w-1; x++) 
                        {
                            // For each grid cell output two triangles
                            tPolys[index++] = (y     * w) + x;
                            tPolys[index++] = ((y+1) * w) + x;
                            tPolys[index++] = (y     * w) + x + 1;
    
                        tPolys[index++] = ((y+1) * w) + x;
                            tPolys[index++] = ((y+1) * w) + x + 1;
                        tPolys[index++] = (y     * w) + x + 1;
                        }
                    }
                }
                else 
                {
                    // Build quad indices: 4 indices into vertex array for each quad
                    for (y = 0; y < h-1; y++) 
                    {
                        for (x = 0; x < w-1; x++) 
                        {
                            // For each grid cell output one quad
                            tPolys[index++] = (y     * w) + x;
                            tPolys[index++] = ((y+1) * w) + x;
                            tPolys[index++] = ((y+1) * w) + x + 1;
                            tPolys[index++] = (y     * w) + x + 1;
                        }
                    }  
                }
    
            // Export to .obj
                try 
                {
                    var sw = new StreamWriter(fileName);
                    sw.WriteLine("# Unity terrain OBJ File");
    
                    // Write vertices
                    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
                    counter = tCount = 0;
                totalCount = (tVertices.Length*2 + (saveFormat == SaveFormat.Triangles? tPolys.Length/3 : tPolys.Length/4)) / 1000;
                    for (i = 0; i < tVertices.Length; i++) 
                    {
                        UpdateProgress();
                        var sb = StringBuilder("v ", 20);
                    // StringBuilder stuff is done this way because it's faster than using the "{0} {1} {2}"etc. format
                        // Which is important when you're exporting huge terrains.
                        sb.Append(tVertices[i].x.ToString()).Append(" ").
                           Append(tVertices[i].y.ToString()).Append(" ").
                           Append(tVertices[i].z.ToString());
                        sw.WriteLine(sb);
                    }
                    // Write UVs
                for (i = 0; i < tUV.Length; i++) 
                {
                        UpdateProgress();
                    sb = StringBuilder("vt ", 22);
                        sb.Append(tUV[i].x.ToString()).Append(" ").
                           Append(tUV[i].y.ToString());
                        sw.WriteLine(sb);
                    }
                    if (saveFormat == SaveFormat.Triangles) 
                    {
                    // Write triangles
                        for (i = 0; i < tPolys.Length; i += 3) 
                        {
                            UpdateProgress();
                        sb = StringBuilder("f ", 43);
                            sb.Append(tPolys[i]+1).Append("/").Append(tPolys[i]+1).Append(" ").
                               Append(tPolys[i+1]+1).Append("/").Append(tPolys[i+1]+1).Append(" ").
                               Append(tPolys[i+2]+1).Append("/").Append(tPolys[i+2]+1);
                            sw.WriteLine(sb);
                        }
                    }
                    else 
                    {
                        // Write quads
                        for (i = 0; i < tPolys.Length; i += 4) 
                        {
                            UpdateProgress();
                            sb = StringBuilder("f ", 57);
                            sb.Append(tPolys[i]+1).Append("/").Append(tPolys[i]+1).Append(" ").
                               Append(tPolys[i+1]+1).Append("/").Append(tPolys[i+1]+1).Append(" ").
                               Append(tPolys[i+2]+1).Append("/").Append(tPolys[i+2]+1).Append(" ").
                               Append(tPolys[i+3]+1).Append("/").Append(tPolys[i+3]+1);
                            sw.WriteLine(sb);
                        }      
                    }
                }
                catch (err) 
                {
                    Debug.Log("Error saving file: " + err.Message);
                }
            sw.Close();
    
                terrain = null;
                EditorUtility.ClearProgressBar();
                EditorWindow.GetWindow(ExportTerrain).Close();
            }
    
            function UpdateProgress () 
            {
                if (counter++ == 1000) 
                {
                    counter = 0;
                    EditorUtility.DisplayProgressBar("Saving...", "", Mathf.InverseLerp(0, totalCount, ++tCount));
                }
            }   
      }  
    

    然后在菜单栏中会多出一项“Terrain”,选中场景中的地形,然后点击该菜单栏,就可以导出了,导出的地形文件为obj类型,将obj导入max中,选择“仅影响轴”即可改变坐标轴位置。

    展开全文
  • unity中的模型导出.FBX格式模型,此插件使用方便,快捷!可以直接使用!
  • 我们在开发中,可能会遇到,需要在unity中拼场景,然后到处模型给美术优化的情况,这种情况下,就需要在Unity导出模型的操作了 思路 实际这个功能的设计思路也很简单,根据在场景中选择的对象,获取它的mesh数据,...

    我们在开发中,可能会遇到,需要在unity中拼场景,然后到处模型给美术优化的情况,这种情况下,就需要在Unity中导出模型的操作了

    思路

    实际这个功能的设计思路也很简单,根据在场景中选择的对象,获取它的mesh数据,然后把数据重新生成文件就好了

    实现

    1.网格数据类

    这个类是用来获取网格各个部分的数据信息的

    保存网格名称
            private void SaveMeshName(MeshFilter meshFilter, StringBuilder data)
            {
                data.Append("g ").Append(meshFilter.name).Append("\n");
            }
    
    保存顶点数据
            private static void SaveVertices(MeshFilter meshFilter, StringBuilder data)
            {
                foreach (Vector3 ver in meshFilter.sharedMesh.vertices)
                {
                    Vector3 worldPos = meshFilter.transform.TransformPoint(ver);
    
                    //因为坐标系的区别,x分量需要反转
                    data.Append(string.Format("v {0} {1} {2}\n", -worldPos.x, worldPos.y, worldPos.z));
                }
                data.Append("\n");
            }
    
    保存法线数据
            private void SaveNormals(MeshFilter meshFilter, StringBuilder data)
            {
                foreach (Vector3 normal in meshFilter.sharedMesh.normals)
                {
                    Vector3 directionWorld = meshFilter.transform.TransformDirection(normal);
    
                    data.Append(string.Format("vn {0} {1} {2}\n", -directionWorld.x, directionWorld.y, directionWorld.z));
                }
                data.Append("\n");
            }
    
    保存uv数据
            private void SaveUVs(MeshFilter meshFilter, StringBuilder data)
            {
                foreach (Vector3 uv in meshFilter.sharedMesh.uv)
                {
                    data.Append(string.Format("vt {0} {1}\n", uv.x, uv.y));
                }
            }
    
    保存材质数据
            private void SaveMaterails(MeshFilter meshFilter, StringBuilder data, Dictionary<string, MaterialData> materialDic)
            {
                Mesh mesh = meshFilter.sharedMesh;
                Material[] materialArray = meshFilter.GetComponent<Renderer>().sharedMaterials;
                string materialName = "";
    
                for (int materialIndex = 0; materialIndex < mesh.subMeshCount; materialIndex++)
                {
                    materialName = materialArray[materialIndex].name;
                    data.Append("\n");
    
                    data.Append("usemtl ")
                        .Append(materialName)
                        .Append("\n");
    
                    data.Append("usemap ")
                        .Append(materialName)
                        .Append("\n");
    
                    //筛选同名材质,不重复添加
                    if (!materialDic.ContainsKey(materialName))
                    {
                        MaterialData materialData = new MaterialData();
    
                        materialData.Name = materialName;
    
                        materialData.TextureName =
                            materialArray[materialIndex].mainTexture ?
                            AssetDatabase.GetAssetPath(materialArray[materialIndex].mainTexture) : null;
    
                        materialDic[materialData.Name] = materialData;
                    }
    
                    //保存三角形数据
                    int[] triangles = mesh.GetTriangles(materialIndex);
                    for (int i = 0; i < triangles.Length; i += 3)
                    {
                        data.Append(string.Format("f {1}/{1}/{1} {0}/{0}/{0} {2}/{2}/{2}\n",
                            triangles[i] + 1 + _vertexOffset, triangles[i + 1] + 1 + _normalOffset,
                            triangles[i + 2] + 1 + _uvOffset));
                    }
                }
    
                _vertexOffset += mesh.vertices.Length;
                _normalOffset += mesh.normals.Length;
                _uvOffset += mesh.uv.Length;
            }
    
    

    2.导出文件部分功能

    导出多个模型为一个文件
            public static void ExportObjsToOne(MeshFilter[] mf, string folder, string filename)
            {
                MeshData data = new MeshData();
    
                using (StreamWriter sw = new StreamWriter(folder + "/" + filename + ".obj"))
                {
                    sw.Write("mtllib ./" + filename + ".mtl\n");
    
                    foreach (MeshFilter mesh in mf)
                    {
                        data.SaveData(mesh);
                        sw.Write(data.ToString());
                    }
                }
    
                ExportMaterials(data.GetMaterialDic(), folder, filename);
            }
    
    导出单个模型为一个文件
            public static void ExportObjToOne(MeshFilter mf, string folder, string filename)
            {
                MeshData data = new MeshData();
                data.SaveData(mf);
    
                using (StreamWriter sw = new StreamWriter(folder + "/" + filename + ".obj"))
                {
                    sw.Write("mtllib ./" + filename + ".mtl\n");
    
                    sw.Write(data.ToString());
                }
    
                ExportMaterials(data.GetMaterialDic(), folder, filename);
            }
    
    保存材质
            private static void ExportMaterials(Dictionary<string, MaterialData> materialList, string folder, string filename)
            {
                using (StreamWriter sw = new StreamWriter(folder + "/" + filename + ".mtl"))
                {
                    foreach (KeyValuePair<string, MaterialData> kvp in materialList)
                    {
                        sw.Write("\n");
                        sw.Write("newmtl {0}\n", kvp.Key);
                        sw.Write("Ka  0.6 0.6 0.6\n");
                        sw.Write("Kd  0.6 0.6 0.6\n");
                        sw.Write("Ks  0.9 0.9 0.9\n");
                        sw.Write("d  1.0\n");
                        sw.Write("Ns  0.0\n");
                        sw.Write("illum 2\n");
    
                        if (kvp.Value.TextureName != null)
                        {
                            string destinationFile = kvp.Value.TextureName;
    
    
                            int stripIndex = destinationFile.LastIndexOf('/');
    
                            if (stripIndex >= 0)
                                destinationFile = destinationFile.Substring(stripIndex + 1).Trim();
    
    
                            string relativeFile = destinationFile;
    
                            destinationFile = folder + "/" + destinationFile;
    
                            try
                            {
                                File.Copy(kvp.Value.TextureName, destinationFile);
                            }
                            catch
                            {
    
                            }
    
    
                            sw.Write("map_Kd {0}", relativeFile);
                        }
    
                        sw.Write("\n\n\n");
                    }
                }
            }
    

    2.编辑器菜单部分

    这个模式会将父物体和子物体的模型分别导出为单独的模型文件
            [MenuItem("BlueToolKit/导出模型/将选中模型分别导出(子物体会拆分导出)")]
            private static void ExportAllChild()
            {
                if (!ExportFile.CreateExportFolder())
                    return;
    
                Transform[] selection = Selection.GetTransforms(SelectionMode.Editable | SelectionMode.ExcludePrefab);
    
                if (selection.Length == 0)
                {
                    EditorUtility.DisplayDialog("未选中模型", "请选中一个或多个模型", "关闭");
                    return;
                }
    
                int exportCount = 0;
    
                for (int i = 0; i < selection.Length; i++)
                {
                    Component[] meshfilter = selection[i].GetComponentsInChildren(typeof(MeshFilter));
    
                    for (int m = 0; m < meshfilter.Length; m++)
                    {
                        exportCount++;
                        ExportFile.ExportObjToOne((MeshFilter)meshfilter[m], ExportFile.EXPORT_FOLDER, selection[i].name + "_" + i + "_" + m);
                    }
                }
    
                if (exportCount > 0)
                    EditorUtility.DisplayDialog("导出成功", "成功导出 " + exportCount + " 个模型", "关闭");
                else
                    EditorUtility.DisplayDialog("导出失败", "导出模型必须含有Mesh Filter组件", "关闭");
            }
    
    这个模式会将所有选中的模型导出为一个模型文件
            [MenuItem("BlueToolKit/导出模型/将选中模型导出成一个obj文件")]
            private static void ExportToSingleObj()
            {
                if (!ExportFile.CreateExportFolder())
                    return;
    
    
                Transform[] selection = Selection.GetTransforms(SelectionMode.Editable | SelectionMode.ExcludePrefab);
    
                if (selection.Length == 0)
                {
                    EditorUtility.DisplayDialog("未选中模型", "请选中一个或多个模型", "关闭");
                    return;
                }
    
                int exportCount = 0;
    
                ArrayList mfList = new ArrayList();
    
                for (int i = 0; i < selection.Length; i++)
                {
                    Component[] meshfilter = selection[i].GetComponentsInChildren(typeof(MeshFilter));
    
                    for (int m = 0; m < meshfilter.Length; m++)
                    {
                        exportCount++;
                        mfList.Add(meshfilter[m]);
                    }
                }
    
                if (exportCount > 0)
                {
                    MeshFilter[] mf = new MeshFilter[mfList.Count];
    
                    for (int i = 0; i < mfList.Count; i++)
                    {
                        mf[i] = (MeshFilter)mfList[i];
                    }
    
                    string filename = SceneManager.GetActiveScene().name + "_" + exportCount;
    
                    int stripIndex = filename.LastIndexOf('/'); //FIXME: Should be Path.PathSeparator
    
                    if (stripIndex >= 0)
                        filename = filename.Substring(stripIndex + 1).Trim();
    
                    ExportFile.ExportObjsToOne(mf, ExportFile.EXPORT_FOLDER, filename);
    
    
                    EditorUtility.DisplayDialog("导出成功", "导出模型名称:" + filename, "关闭");
                }
                else
                    EditorUtility.DisplayDialog("导出失败", "导出模型必须含有Mesh Filter组件", "关闭");
            }
    
    这个模式会将选中物体和子物体的模型导出为一个文件,选择几个模型就到处几个
     [MenuItem("BlueToolKit/导出模型/将选中模型分别导出(子物体不拆分导出)")]
            private static void ExportParent()
            {
                if (!ExportFile.CreateExportFolder())
                    return;
    
                Transform[] selection = Selection.GetTransforms(SelectionMode.Editable | SelectionMode.ExcludePrefab);
    
                if (selection.Length == 0)
                {
                    EditorUtility.DisplayDialog("未选中模型", "请选中一个或多个模型", "关闭");
                    return;
                }
    
                int exportCount = 0;
    
    
                for (int i = 0; i < selection.Length; i++)
                {
                    Component[] meshfilter = selection[i].GetComponentsInChildren(typeof(MeshFilter));
    
                    MeshFilter[] mf = new MeshFilter[meshfilter.Length];
    
                    for (int m = 0; m < meshfilter.Length; m++)
                    {
                        mf[m] = (MeshFilter)meshfilter[m];
                    }
    
                    exportCount++;
    
                    ExportFile.ExportObjsToOne(mf, ExportFile.EXPORT_FOLDER, selection[i].name + "_" + i);
                }
    
                if (exportCount > 0)
                {
                    EditorUtility.DisplayDialog("导出成功", "成功导出 " + exportCount + " 个模型", "关闭");
                }
                else
                    EditorUtility.DisplayDialog("导出失败", "导出模型必须含有Mesh Filter组件", "关闭");
            }
    

    这个小插件在有需求的时候,还是蛮好用的,希望对大家有帮助,完整代码可以到我的工具集里找到

    工具收录于我自己写的工具集,内部还有我写的几个小插件,我会慢慢更新,欢迎关注
    工具集地址:https://github.com/BlueMonk1107/BlueToolkit

    我会在我的公众号上推送新的博文,也可以帮大家解答问题
    微信公众号 Andy and Unity 搜索名称或扫描二维码
    在这里插入图片描述
    希望我们能共同成长,共同进步

    展开全文
  • Unity3d网络加载模型导出unity3d格式文件
  • unity3d导入导出资源包

    2020-04-07 14:39:48
    选择你想要导出的模型,右键选择Export Package,在界面中间有include dependencies,用来选择是否包括依赖项的选项,勾选后会导出模型的依赖项,不勾选则不会 然后点击export导出,选择导出的位置即可 导入 点击...

    导出

    选择你想要导出的模型,右键选择Export Package,在界面中间有include dependencies,用来选择是否包括依赖项的选项,勾选后会导出模型的依赖项,不勾选则不会
    在这里插入图片描述
    然后点击export导出,选择导出的位置即可
    在这里插入图片描述

    导入

    点击Asserts,选择Import Package,选择Custom Package,然后选择你需要导入的模型,确定即可
    在这里插入图片描述

    展开全文
  • Unity的Editor文件夹放入unity的Asset 文件下 然后点击任务栏中的Custom --Export--->
  • Unity3d GameObject导出FBX

    2018-08-20 15:09:42
    编辑器并不提供将GameObject导出成fbx文件的功能。使用插件FBX Exporter。 这款插件要求比较高 https://download.csdn.net/download/u012801153/10610147

    编辑器并不提供将GameObject导出成fbx文件的功能。使用插件FBX Exporter。

    https://download.csdn.net/download/u012801153/10610147

    这款插件要求比较高
    这里写图片描述

    展开全文
  • WRP FBX Exporter 1.01 - Unity导出FBX模型的专用插件
  • unity模型导出插件

    2020-07-07 21:24:22
    unity中的模型转为obj格式,方便非常规模型的转换与调整
  • unity3d中写脚本实现模型的颜色变化和旋转,注意如果模型设置为static是旋转不了的。 功能描述:鼠标落到模型模型颜色变化,按下鼠标模型开始旋转。 脚本代码如下: using UnityEngine; using System.Collections; ...

    我参加了CSDN博客之星评选,如果在过去的一段时间里我的博客对你有所帮助,在这里希望能投上您宝贵的一票,每天都可以投一次:http://vote.blog.csdn.net/blogstar2014/selection?username=kupe87826#content

    本文好多内容,来自互联网。

    环境:unity3d 4.1,

    unity3d中写脚本实现模型的颜色变化和旋转,注意如果模型设置为static是旋转不了的。

    功能描述:鼠标落到模型,模型颜色变化,按下鼠标模型开始旋转。

    脚本代码如下:

    using UnityEngine;
    using System.Collections;
    
    public class test : MonoBehaviour {
    
    	bool tri1=false;
    	bool tri2=false;
    	Color orgColor;
    
    	// Use this for initialization
    	void Start () {
    		orgColor = renderer.material.color;
    
    
    	}
    	
    	// Update is called once per frame
    	void Update () {
    
    		if (tri2)
    						transform.Rotate (Vector3.up* Time.deltaTime * 200);
    	
    		Vector4 t = renderer.lightmapTilingOffset;
    	}
    
    	void OnMouseOver()
    	{
    		renderer.material.color = Color.yellow;
    	
    		tri1 = true;
    	}
    
    	void OnMouseExit()
    	{
    		renderer.material.color = orgColor;
    	}
    
    	void OnMouseDown()
    	{
    		if (tri1)
    			tri2 = true;
    	}
    }


    想把unity3d中的模型导出到obj文件,从网上搜索了一下,找到的导出脚本。

    步骤如下:

    1、将EditorObjExporter.cs和ObjExporter.cs文件放到Unity的Editor目录下

    2、重新打开unity3d会出现custom菜单,在菜单下会有导出的

    下载链接:



    展开全文
  • Export To Obj --> Export 作品来源于网络,版权归原作者所有, 所提供的教程作品是对原作品的推广和宣传,请在下载后24小时删除,请支持原版作品来源于网络,版权归原作者所有, 所提供的教程作品是对原作品的...
  • 1. 单位设置:自定义→单位设置→系统单位设置→系统单位比例 选择厘米 →公制 选择米 2. 轴向设置: 层次→仅影响轴 把物体x轴反向90度 转载于:https://www.cnblogs.com/dengshili...
  • 调试时无问题, 导出apk安装到手机上时, 带有光贴图的模型丢失材质. 光贴图是在3DMax内烘焙好后, 将材质附加在场景内的面片上. 程序启动后通过代码创建光贴图shader将光贴图...设置路径: [Unity3D 5.0版] Edit - ...
  • Unity3D支持多种外部导入的模型格式,这里列出了它支持的外部模型的属性,并且以3D MAX为例,导出FBX文件给Unity3D使用。 Unity3D支持多种外部导入的模型格式,但它并不是对每一种外部模型的属性都支持。具体...
  • unity3d汽车模型

    2020-06-03 23:32:53
    unity3d汽车模型,拥有26辆汽车模型,使用3ds mix制作,可以自主导出为需要的格式
  • Unity 导出FBX 安装插件 下载地址 链接:https://pan.baidu.com/s/1ARZ3Rdzb0800ZuVJs16p1Q  提取码:5emt 使用方法   FBXExporter.ExportFBX("", fbxname, meshObjs, true); 第一个参数 文件路径...
  • Unity3D的地形导出插件,可将U3D的地形数据导出为网格模型导入到三维软件里面!
  • 美术想要一个把unity中*.asset的模型导出来,导成3D Max可以打开的模式,fbx或obj. 需要导出的格式: 图1 也就是需要一个工具,个人觉得这个问题,肯定之前Unity的前辈就有解决方法了。于是乎网上一通下载和...
  • unity3d 导出 Excel

    2019-07-07 14:06:10
    我在unity里需要导出成Excel格式,试了一些方法,其中用c#的com组件的我还没成功不知道该怎么在unity里调用,(如果哪位大哥用别的方法在unity里成功了,可以交流下,最好给我一个小demo(849288321@qq.com),谢谢啦.),不过...
1 2 3 4 5 ... 20
收藏数 3,738
精华内容 1,495