关于Unity中场景的导入与导出(专题九)
Unity场景
场景虽然是由场景美术做好的,但是我们经常需要自己去导导出以及从别的项目导入,所以我们需要对场景的导入和导出有一个详细的了解
1: 场景是由美术人员搭建完成后提交给程序;
2: 场景一般包括了地形, 创建物体, 光源, 天空盒,与雾等;
3: 场景不包含任何逻辑
4: 程序员要能熟练的导入与导出其他项目的场景;
场景导出和导入思路
把Unity4.X的场景文件导入到Unity5.X的场景中
1: 准备好Unity 4.7游戏项目的要导出的场景;
2: 将属于场景的物体,导出成预制体;
3: 将预制体导入到自己的场景;
4: 检查导入后的正确性;
5: 导入天空盒;
6: 如果有雾的话配置好雾;
7: 打开光源,烘培出静态光照;
场景导出实例
打开Unity4.X,打开项目工程,先选中一个要导出的场景,双击打开
1.导出天空盒。
观察:如果在场景编辑器里面,能看到天空盒,那么说明天空盒配置在全局的,不是在摄像机上的,要挂摄像机上可以加一个Skybox组件,所以如果天空盒不是全局的可以去摄像机的Skybox组件的属性里面找天空盒材质。
导出:Unity 4.7与Unity5.X的不同在于,它的全局天空盒设置是在Edit---->Render Settings---->Skybox Material---->点击材质关联属性,
找到当前场景的天空盒材质---->右键---->Export Package---->Export(导出天空盒的依赖资源<上面>+天空盒材质<下面>)---->到专门的一个文件夹中并重命名sky.unitypackage
2.导出Hierarchy视图下的场景有关的节点。
观察:一个一个节点进行隐藏和显示,看会不会对Scene视图的显示产生影响,有影响的就是静态的物体,是要导出的。也就是学会使用Active找到自己想要导出的某个场景中的静态节点。
导出:把场景节点拖到一个固定的目录---->生成预制体---->一起选中右键---->Export Package---->Export(导出预制体的依赖资源<上面>+刚才的预制体<下面>)---->到专门的一个文件夹中并重命名game_map.unitypackage
---->删除预制体---->还原变成预制体的节点---->Gamobject---->Break Prefab Instance
场景导入实例
打开Unity5.X,创建项目工程
1.导入刚才导出的专门的一个文件夹里面的package资源包,sky.unitypackage和game_map.unitypackage,保存场景
2.配置天空盒。
寻找:找到天空盒的材质,找不到可以在上面的搜索栏搜索Sky
导入:Windows---->Lighting---->Scene---->Skybox---->把天空盒材质拖进去(有的游戏的天空盒不需要上和下的贴图,所以有的时候上下会有两个洞)
3.配置场景有关的节点。蓝色步骤可以省略。
导入:直接把刚才导入的两个预制体节点拖入Hierarchy视图下变成场景中的节点
排查:发现显示有问题,是因为版本的差异导致的,有些子节点由于命名不规范等等原因找不到对应的材质文件或者模型网格Mesh而无法显示。但是导入的资源和依赖是完整的,没有丢失的。这时候只能一个一个子节点地排查并关联网格Mesh和材质。
展开父节点---->找到其中一个子节点(这个是模型节点)---->展开这个子节点---->发现这个子节点的子节点中的某个节点网格组件Mesh Filter的Mesh属性为Missing
---->复制该模型节点的名字---->到Unity4.X里面的Hierarchy视图中搜索这个节点(搜到后选中同名节点然后再删除搜索栏的名字)
---->找到对应的模型节点,展开模型节点,发现它的子节点的Mesh有关联Mesh---->确认Unity5.X中这个模型节点的这个子节点丢失了网格Mesh
---->复制该模型节点的名字---->到右边Project搜索栏里面搜索(搜到后选中同名模型文件然后再把搜索栏名字删除才会到模型.FBX文件的目录下)---->展开对应名字的模型文件.FBX结尾的,找不到可以用文件夹浏览看后缀.FBX
---->把对应的丢失的网格资源,子.FBX资源文件,拖进丢失节点网格Mesh的节点的Mesh Filter组件的Mesh属性中---->手动关联成功---->排查下一个模型节点
4.删除无用的脚本组件
提示说找不到某个脚本,可以直接复制节点名字,到下面把对应的脚本组件删除
5.烘焙操作。
场景中的光照一般都是使用烘焙光照,不是实时的,所以
开灯:找到光源的总父节点Light,然后设置为Active显示,就是打钩节点的左上角,这时候其实设置为baked的光源会自己开始烘焙static物体
烘焙:Windows---->Lighting---->Scene---->取消auto---->Build---->完成后会生成静态光照的资源文件
6.保存预制体。
等到一切都设置好后,和Unity4.X里面的效果一样之后,可以把这两个预制体点击Apply保存,就可以直接删除再拖预制体进来了。
心得:
美术资源的命名一定要规范,千万不要用中文,不然在导入导出的时候会非常麻烦,要手动关联Mesh和材质。
关于Unity中场景的导入与导出(专题九)的更多相关文章
- C#中Excel的导入和导出的几种基本方式
在上一篇(http://www.cnblogs.com/fengchengjushi/p/3369386.html)介绍过,Excel也是数据持久化的一种实现方式.在C#中.我们常常会与Excel文件 ...
- 前端必读:如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
JavaScript在前端领域占据着绝对的统治地位,目前更是从浏览器到服务端,移动端,嵌入式,几乎所有的所有的应用领域都可以使用它.技术圈有一句很经典的话"凡是能用JavaScript实现的 ...
- 前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件
最近我们公司接到一个客户的需求,要求为正在开发的项目加个功能.项目的前端使用的是React,客户想添加具备Excel 导入/导出功能的电子表格模块. 经过几个小时的原型构建后,技术团队确认所有客户需求 ...
- Java中使用poi导入、导出Excel
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- Hive中数据的导入与导出
最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...
- MyEclipse或Eclipse中project的导入和导出
project的导入:将project放到对应的目录中--打开MyEclipse--光标定位在PackageExp位置(即project创建位置),右键选中并点击"Import-" ...
- Unity 中场景切换
Unity游戏开发中,单个Scene解决所有问题似乎不可能,那么多个Scene之间的切换是必然存在.如果仅仅是切换,似乎什么都好说,但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一 ...
- mysql数据库中的数据导入与导出
需求: 在本地电脑上的mysql中创建了一个数据库,并且在该数据库中创建了很多表,表中数据比较多: 现在想换一台电脑,但是又不想重新建数据库.建表.造数据. 解决方案: 利用mysql提供的命令,在本 ...
- Unity中场景异步加载
引入命名空间 using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Collections; using Syst ...
随机推荐
- HTML5学习笔记(三):语义化和新增结构元素
在HTML5之前,使用机器来阅读一个网页是非常困难的,我们使用不同样式的div来标记不同的内容,所以实际上机器无法得知页面的哪个部分是正文,哪个部分是标题,那么在HTML5里,针对这个问题就引入了语义 ...
- C++中的static 成员变量的一些注意点
C++中的static成员变量主要用来为多个对象共享数据 例: #include <iostream> using namespace std; class Student{ public ...
- 评价linux协议栈tcp实现中的prequeue
https://blog.csdn.net/dog250/article/details/5464513 https://wiki.aalto.fi/download/attachments/7078 ...
- Flink PPT
杭州第六次 Spark & Flink Meetup 资料分享 https://github.com/397090770/Spark-Flink-Meetup-6-Hangzhou https ...
- nginx配置长连接
http { keepalive_timeout 20; --长连接timeout keepalive_requests 8192; --每个连接最大请求数 } events { worker_con ...
- Linux系统/boot目录破损无法启动怎么办
linux系统中的/boot目录存放着系统开机所需要的各种文件,其中包含内核.开机菜单及所需配置文件等等.但是当不小心删除了/boot目录里的某些文件或者干脆整个/boot目录都不见了的情况下,该如何 ...
- c++11实现一个简单的lexical_cast
boost中有一个lexical_cast可以用统一的方式来做基本类型之间的转换,比如字符串到数字,数字到字符串,bool和字符串及数字之间的相互转换.boost::lexical_cast的用法比较 ...
- 2017-04-26 ios ipv6那些事(已完美解决)
2017-04-26 ios ipv6那些事(已完美解决) 工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...
- Docker 镜像操作
列出镜像列表 我们可以使用 docker images 来列出本地主机上的镜像. runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREA ...
- tensorboard简单使用
代码写的再好,没有图别人也不知道好在哪. 我们在使用tensorflow的时候,使用tensorboard可以直观的看到我们的网络结构,甚至它可以计算卷积和池化的维度(我不知道是不是因为我已经运行了一 ...