Resources

class in UnityEngine

Switch to Manual

Description

Resources 类允许您查找和访问资源等对象。

In the editor, Resources.FindObjectsOfTypeAll can be used to locate assets and Scene objects.

All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via the Resources.Load functions. Multiple "Resources" folders may exist and when loading objects each will be examined.

在 Unity 中,我们通常不使用路径名称访问资源,而是通过声明一个成员变量来公开对资源的引用,然后在 Inspector 中对其进行分配。 使用该技术时,Unity 在构建玩家时能够自动计算使用的资源。 这从根本上将玩家的大小尽可能地限制为您在构建的游戏中实际使用的资源大小。 当您将资源放入“Resources”文件夹时,则无法实现这一效果,因此“Resources”文件夹中的所有资源都将包含在构建中。

使用路径名称的另一个缺点是,由于脚本会对所使用的资源的放置位置提出特定的硬编码要求,因此会降低代码的重用性。 另一方面,在 Inspector 中使用公开的引用具有自文档化的特点,对脚本用户来说也更加直观易懂。

但是,在某些情况下,通过名称获取资源比在 Inspector 中链接到资源更为方便。 基本上,只要不方便在 Inspector 中为对象分配引用时, 您就应该,例如,在脚本中以程序方式创建游戏对象、将纹理指定给程序生成的网格等。

Some loaded assets, most notably textures, can use up memory even when no instance exists in the Scene. To reclaim this memory when the asset is no longer needed, you can use 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; } }

Static Functions

FindObjectsOfTypeAll返回所有类型为 type 的对象的列表。
Load加载存储在 Resources 文件夹中的 path 处的资源。
LoadAll加载位于 Resources 文件夹中的 path 处的文件夹中的所有资源,或加载位于该处的文件。
LoadAsync异步加载存储在 Resources 文件夹中的 path 处的资源。
UnloadAsset从内存中卸载 /assetToUnload/。
UnloadUnusedAssets卸载未使用的资源。