1. Unity3d 使用Assetbundle合并项目的几点注意
Unity3d中动态资源读取,除了Resources.Load方式。还有就是Assetbundle。
Assetbundle的各方面介绍,这里就不在赘述,网上搜搜就一大片。但是,是不是什么东西都能被打成Assetbundle呢?
基本上,引用到的资源,都能被打成Assetbundle。但是脚本和shader却不一样,虽然脚本和shader也能被导入Assetbundle。但是却不能把源文件导入(如果Assetbundle中存的是脚本的源文件,那也就没那么多热更新解决方案了)。最简单的验证方法,把一个项目的一个场景,导出Assetbundle,另一个项目读取这个Assetbundle运行。会发现资源都导入了,却没有执行的脚本。
因此,如果两个项目,想通过Assetbundle方式,来合并两个项目,那就必须把脚本也拷到要被导入的项目中。两个项目脚本合并,难免出现重名的脚本,重名的类。为了解决这个,每个项目,定一个唯一的namespace。如果项目开始的时候就定好了,那还好办,如果后期合并,前期都没加过。那就只能自己写个Editor脚本,批量加上。
Unity项目中,难免使用一些全局的设置,比如,Physic重力设置,Tag和Layer这些。重力还好办,项目运行起来,还能通过脚本修改。但是Tag,Layer却不行。只能想办法进行合并。
Unity中,Tag只能通过string修改。但是,导成Assetbundle之后,其存储是index。所以要么在合并Tag的时候,要么批量修改,要么写个映射。当然,最好的方式是,项目统一用一套Tag。
Layer相比于Tag要简单许多,Layer可以通过int修改。Unity最大有32个Layer,即使你不添加Layer,也能通过修改Layer的index来使用。那么只要工程中定义全局使用的Layer即可
由于项目的资源都是Assetbundle,那么打包的时候,Unity会自动帮你精简项目。所以,Shader和脚本,就有可能被精简掉。
所以保险起见,吧项目中所有的Shader全部添加到
Unity的脚本也得进行相应的设置
2. 我有两个UNITY 3D 场景文件,怎么合并
把地形的导出高度图,然后在新建的地形里面读取高度图
3. unity如何将两个不同工程的场景弄倒一起
将其中一个工程的场景打包导出
(右键场景,exprot package)
,在另一个工程里面导入
(菜单 --- assets --- import package --- custom package)注意就是 不要有中文路径,不然会出错:)
希望对你有用
4. unity 3d 场景合并
把A 做成 Prefab , 然后打开B场景 把 Prefab 拖入场景里就就好了~