版本: Unity 6 (6000.0)
语言英语
  • C#

Resources

UnityEngine 中的类

/

实现于:UnityEngine.CoreModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

Resources 类允许您查找和访问包括资产在内的对象。

在编辑器中,可以使用 Resources.FindObjectsOfTypeAll 查找资产和场景对象。

所有位于 Assets 文件夹中任何位置名为 "Resources" 的文件夹中的资产都可以通过 Resources.Load 函数访问。可能存在多个 "Resources" 文件夹,加载对象时将检查每个文件夹。

在 Unity 中,您通常不会使用路径名称来访问资产,而是通过声明一个成员变量来公开对资产的引用,然后在检查器中为其赋值。使用此技术时,Unity 可以自动计算构建播放器时使用的资产。这会将播放器的大小大幅度缩减到实际在构建的游戏中使用的资产。将资产放置在 "Resources" 文件夹中时,无法执行此操作,因此 "Resources" 文件夹中的所有资产都将包含在构建中。

使用路径名称的另一个缺点是它会导致代码可重用性降低,因为脚本将对使用的资产放置位置有特定的硬编码要求。另一方面,在检查器中公开的引用是自记录的,并且对您的脚本的用户来说是立即显而易见的。

但是,在某些情况下,通过名称获取资产比在检查器中链接到它更方便。基本上,只要在检查器中为对象分配引用不方便时。例如,您可能希望从脚本中以过程方式创建游戏对象,并例如将纹理分配给过程生成的网格。

一些加载的资产(最显着的纹理)即使在场景中没有实例存在的情况下也会占用内存。要回收不再需要的资产的内存,可以使用 Resources.UnloadUnusedAssets.

注意: 在使用之前,需要创建 Assets 中的 Resources 文件夹。在创建新项目时不会创建它。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Start() { GameObject go = GameObject.CreatePrimitive(PrimitiveType.Plane); Renderer rend = go.GetComponent<Renderer>(); rend.material.mainTexture = Resources.Load("glass") as Texture; } }

静态方法

FindObjectsOfTypeAll返回类型为 T 的所有对象的列表。
InstanceIDIsValid如果给定的实例 ID 对应于内存中的有效对象,则返回 true。该对象可能已被删除或尚未加载到内存中。
InstanceIDsToValidArray将实例 ID 数组转换为布尔值数组,指示 instanceIDs 中的给定实例 ID 是否对应于内存中的有效对象。该对象可能已被删除或尚未加载到内存中。
InstanceIDToObject将实例 ID 转换为对象引用。
InstanceIDToObjectList将实例 ID 数组转换为对象引用列表。
Load加载存储在 Resources 文件夹中路径处的请求类型的资产。
LoadAll加载 Resources 文件夹中路径处的文件夹或文件中的所有资产。
LoadAsync异步加载存储在 Resources 文件夹中路径处的资产。
UnloadAsset从内存中卸载 assetToUnload。
UnloadUnusedAssets卸载未使用的资产。