1. unity中的特殊文件夹
在Unity中一些文件夹是预设定具有某些特殊功能的。在建立文件夹时若不是使用相应功能,应避免和这些文件夹重名。
***Assets文件夹***为资源的根节点,所有的资源都应在Assets文件夹下,经测试似乎可以命名其他文件夹为Assets,但为了避免混淆,应避免使用这个文件夹名。
Editor 文件夹,用来存放一些调用Unity.Editor的API的脚本。可以在各个层级中有各自的Editor文件夹。因为实际项目不能调编辑器,这个文件夹中的脚本不会被build打包进去。
Editor Default Resources文件夹,注意中间是有空格的。它必须放在Assets根目录下,只能有一个。你可以把编辑器用到的一些资源放在这里,比如图片、文本文件、等等。它和Editor文件夹一样都不会被打到最终发布包里,仅仅用于开发时使用。你可以直接通过EditorGUIUtility.Load去读取该文件夹下的资源。
Gizmos文件夹,用来存在OnDrawGizmos方法内使用Gizmos.DrawIcon所画出的图标。
Plugins文件夹,它必须放在Assets根目录下,只能有一个。用来存放一些插件。如果做手机游戏开发一般 andoird 或者 ios 要接一些sdk 可以把sdk依赖的库文件 放在这里,比如 .so .jar .a 文件。这样打完包以后就会自动把这些文件打在你的包中。
Resources文件夹,可以在各个层级中有各自的Resources文件夹。Resources文件夹下的资源不管你用还是不用都会被打包。可以用Resources.Load方法来直接读取,例如:
GameObject g = Resources.Load<GameObject>("Cube");//载入资源(预制体)
Instantiate(g);//在场景中实例化资源
实际是传递一个Path,默认是在Resource文件夹下。这个方法会找遍所有的Resources文件夹看是否有符合的文件。
(Resources.LoadAssetAtPath()已被弃用)。
官方文档提示:Resources 文件夹是 Unity 项目中许多常见问题的来源。Resources 文件夹的使用不当会使项目构建出现膨胀,导致内存消耗过高,并显著增加应用程序启动时间。
Standard Assets文件夹,存放Unity的标准资产。它必须放在Assets根目录下,只能有一个。
StreamAssets文件夹。它必须放在Assets根目录下,只能有一个。存放媒体文件,如视频等。该文件夹下的资源会打包进发布包,它和Resources文件夹的区别是:Resources文件夹下的资源在打包时会被压缩,但StreamingAssets文件夹下的资源不会被压缩,而是原封不动的打包进发布包中。它是一个只读的文件夹,就是程序运行时只能读 不能写。它在各个平台下的路径是不同的,不过你可以用Application.streamingAssetsPath 它会根据当前的平台选择对应的路径。
2. 预制体
预制体相当于一个GameObject的模板。我们可以把场景中做好的GameObject保存下来,用在别的场景或者来动态生成。
a) 预制体的制作
直接将GameObject从Hierarchy面板拖到Project面版里就行,生成一个蓝色方块即为预制体。
b) 预制体的实例化
- 直接从从Project面板拖到Hierarchy面板即可。
- 在脚本中开个GameObject类的变量,将预制体资源拖上去,之后再在方法中实例化(克隆)。
public GameObject BallPrefab;//用来接收预制体
void Start()
{
Instantiate(BallPrefab);//实例化
}
- 将预制体放在Resources文件夹中,用Resources.Load方法读取后再Instantiate实例化。
c) 预制体对实例的覆写
由于预制体相对于实例的模板,对预制体的修改会按一定规则影响实例。通过双击Project面板里的预制体或者实例的Insp