当前位置:网站首页>Unity脚本的基础语法(6)-特定文件夹
Unity脚本的基础语法(6)-特定文件夹
2022-07-02 03:25:00 【ht_game】
在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-firstpass或Assembly-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中的所有脚本
边栏推荐
- 浅谈线程池相关配置
- Which of PMP and software has the highest gold content?
- Gradle 笔记
- What is hybrid web containers for SAP ui5
- Verilog 状态机
- Knowing things by learning | self supervised learning helps improve the effect of content risk control
- Named block Verilog
- verilog 并行块实现
- "Analysis of 43 cases of MATLAB neural network": Chapter 41 implementation of customized neural network -- personalized modeling and Simulation of neural network
- ThreadLocal详解
猜你喜欢
Eight steps of agile development process
初出茅庐市值1亿美金的监控产品Sentry体验与架构
Exchange rate query interface
Cache processing scheme in high concurrency scenario
Verilog 过程赋值 区别 详解
Docker installs canal and MySQL for simple testing and implementation of redis and MySQL cache consistency
In the era of programmers' introspection, five-year-old programmers are afraid to go out for interviews
[JVM] detailed description of the process of creating objects
Detailed explanation of the difference between Verilog process assignment
JS introduction < 1 >
随机推荐
Grpc quick practice
tarjan2
JDBC details
知物由学 | 自监督学习助力内容风控效果提升
Go execute shell command
aaaaaaaaaaaaa
32, 64, 128 bit system
3124. Word list
Verilog 避免 Latch
aaaaaaaaaaaaa
Qualcomm platform wifi-- WPA_ supplicant issue
[database]jdbc
Verilog avoid latch
js生成随机数
Global and Chinese markets for hand hygiene monitoring systems 2022-2028: Research Report on technology, participants, trends, market size and share
Named block Verilog
C # joint halcon out of halcon Environment and various Error Reporting and Resolution Experiences
Detailed explanation of the difference between Verilog process assignment
Screenshot literacy tool download and use
Kotlin基础学习 17