Unity脚本的基础语法(6)-特定文件夹

在Unity项目的开发过程中,可以选择创建任意符合规范名称的文件夹来组成整个项目的目录结构。同时,Unity定义了一系列特定名称的文件夹用于处理指定的任务,如必须将与编辑器相关的脚本放置在Editor文件夹内才能正常工作。

Assets

  Assets文件夹包括了Unity项目中使用到的所有资源文件。新建Unity项目后,会自动创建该文件夹。在Project面板中,Assets作为根文件夹使用。并且,不需要明确地指明,所有的API方法默认全部的资源文件都位于Assets文件夹内。

在这里插入图片描述

Editor

  放置在Editor文件夹内的脚本被看为编辑器脚本,而不是运行时脚本。该文件夹内的脚本仅仅开发时在编辑器内运行,而不是被包含进build后的项目中。只有在此文件夹内的脚本能够访问Unity Editor的API,从而对编辑器进行拓展。
在这里插入图片描述

Resources

  Resources文件夹允许在脚本中通过文件的名称来访问对应的资源。使用Resources.Load方法进行动态加载,放在这一文件夹的资源永远被包含进build中,即使没有被使用。一旦打包生成项目,Resources文件夹内的所有资源被打包进存放资源的archive中。


  当资源作为脚本变量访问是,这些资源在脚本被实例化之后就被加载进内存。若资源过大,可以将这些大资源放进该文件夹内进行动态加载;当不再使用这些资源时,调用Resources.UnloadUnusedAssets释放内存。

Resources.Load()进行加载Assets中的资源
资源:预制体、模型、材质、纹理、音频、视频、数据文档、场景等等

注意:Resources这种动态加载方式是只读的,在游戏打包后,就无法对文件夹的内容进行修改

Resources的方法
FindObjectsOfTypeAll:返回某一种类型的所有资源
Load:通过路径(或名称)加载资源
LoadAll:加载该Resources下的所有资源
LoadAsync:异步加载资源,通过协程实现
UnloadAsset:卸载加载的资源
UnloadUnusedAssets:卸载在内存分钟未使用的资源


加载资源

public class Resource : MonoBehaviour {
	void Start()
	{
		AddObjToScenes();
	}

	/// <summary>
	/// 定义一个加载Resources文件夹内资源的方法
	/// </summary>
	public void AddObjToScenes()
	{
		//将资源加载到游戏进程中
		var obj = Resources.Load("123");
		//实例化一个资源到场景中
		GameObject instance = Instantiate(obj) as GameObject;
		instance.transform.position = Vector3.zero;
 
        //将资源从进程置空
		obj = null;
		//卸载加载的资源
		Resources.UnloadAsset();

	}
}

Plugins

  Plugins文件夹用于存放native插件,这些插件会被自动包含进build中。在Windows平台下,native插件是dll文件

Plugins文件夹必须是Assets文件夹的直接子目录

Gizmos

  Unity可以使用Gizmos类在Scene面板中绘制图像来显示设计细节,其中Gizmos.DrawIcon函数可以在场景窗口中绘制一个图标以标记特殊的对象和位置,而该函数所使用的图像文件位于Gizmos文件夹中

StreamingsAssets

  当需要使用某种保留原格式的资源而不是Unity进行特殊处理后的格式时,可将其资源放置在StreamingAssets文件夹中。该文件夹中资源将在游戏安装时原样复制到目标设备相应的文件夹下,无论任何平台都可以通过Application.streamingAssetsPath进行访问

StandardAssets

  StandardAssets文件夹中的脚本最先被编译,这些脚本会根据语言被导出到Assembly-Csharp-firstpassAssembly-UnityScript-firstpass项目中。将脚本防到此文件夹内,就可以用C#脚本来访问js脚本或其他语言的脚本

隐藏文件夹

  以 . ‘’ 开头、以 ~ 结尾、以 cvs 命名或以 .tmp 为扩展名的文件夹均为隐藏文件夹,隐藏文件夹中的资源不会被导入,脚本也不会被编译,Unity将会完全忽视此文件夹的存在。

脚本编译

(1)编译在StandardAssets、Plugins文件夹中的所有脚本。在这些文件夹内的脚本不能直接访问这些文件夹以外的脚本,不能直接引用类或它的变量,但是可以使用GameObject.SendMessage与它们通信。
(2)编译在StandardAssets/Editor 、 Plugins/Editor文件夹中的所有脚本。如果想要使用UnityEditor命名空间,必须将脚本放置到这些文件夹中。
(3)编译在Assets/Editor外面的并且不在步骤(1)和(2)中的所有脚本文件。
(4)编译在Assets/Editor中的所有脚本

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值