UNITY 5.2 Resources类

来源:互联网 发布:linux ip配置文件 编辑:程序博客网 时间:2024/06/07 11:23
描述:
该类能查找和使用对象, Resources.FindObjectsOfTypeAll 能定位资源和场景对象

所有包含在 Assets文件夹下中的 Resources 文件夹中的资源都能被 Resources.Load 访问,若存在多个 Resources 则会自动检查。

在UNITY开发中,一般不用路径名来操作资源,而是通过声明一个成员变量在 inspector 赋值某个资源的引用。如果运用这种技术,UNITY能够自动的计算哪些资源是被用的当完成创建时,如果直接将资源放在 Resources 目录下则会将所有资源打包进游戏。

另外一个不好的地方就是,当脚本特别指定严格的代码来获取资源的路径时,代码的重用性很低。在 inspector 中暴露引用的方式对于使用该脚本的用户来说是很直接有效的。
然后还是有一些情况不应该使用 inspector  暴露引用的方式给对象赋值,比如 动态的创建对象 和 赋值纹理时。

一些已经加载的资源(尤其是纹理)会一直占用内存,即使场景中没有对象。当这些资源不再使用,为了回收这些内存,可以调用Resources.UnloadUnusedAssets 回收这些资源。


Static函数:

public static T[] FindObjectsOfTypeAll<T>() where T : Object;
public static Object[] FindObjectsOfTypeAll(Type type);

说明:这个函数会返回所有已经加载的对象数组,还返回内部的对象,所以小心使用该数组。

与Object.FindObjectsOfType 不同,不可用的对象也会列举在内


public static Object Load(string path);
public static T Load<T>(string path) where T : Object;
public static Object Load(string path, Type systemTypeInstance);
说明:加载 Resources  文件夹总路径为 path 的资源,systemTypeInstance 指定对象类型,否则为努力了,不使用扩展名

public static Object[] LoadAll(string path);
public static T[] LoadAll<T>(string path) where T : Object;
public static Object[] LoadAll(string path, Type systemTypeInstance);
说明:加载 Resources  文件夹总路径为 path 的资源,若 path 为文件夹则加载该文件夹下所有的资源,若为文件则只返回该资源文件指定的对象,systemTypeInstance 指定对象类型。

public static ResourceRequest LoadAsync(string path);
public static ResourceRequest LoadAsync<T>(string path) where T : Object;
public static ResourceRequest LoadAsync(string path, Type type);
说明:异步加载 Resources 文件夹中 path 下的资源,当资源被加载完成时能被重新获取则返回 ResourceRequest。 只有指定类型的资源才会被返回

public static void UnloadAsset(Object assetToUnload);
说明:卸载内存中的资源,仅用于保存在硬盘上的资源,如果还有对象引用该资源,则会被重新加载

public static AsyncOperation UnloadUnusedAssets();
说明:卸载未使用的资源
0 0