大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

xdm,国庆节快乐呀,无聊学习一会,跟大家分享一点点知识。

Resources目录大家应该很熟悉了,这个是Unity3D的一个特殊文件夹,用来加载文件的。

构建项目时,会将Resources目录中的所有的资源和对象都合并到一个序列化文件中,该文件中包含元数据和索引信息,该索引包含一个序列化查找树,用于将给定对象的名称解析为其适当的文件GUID和本地ID。这么一说,跟AssetBundle也有点类似哦。

Resources的使用的话就很简单,将文件放到Resources文件夹内,然后使用Resourcesl.Load加载就行,比如:

void Start()
{
	Resources.Load("Test");
}

当然,加载也有很多要注意的点,比如反斜杠、文件类型、文件后缀名的,增加应用程序的启动时间和构建时间,无法增量更新等问题。

但是,今天咱们要讨论的是不同目录的Resources文件夹的加载。

二、不同目录下的Resources加载

2-1、开始之前解释一下

大家可能会问,Resources在其他目录还能加载呢,Resources放不同目录干嘛呢?

Resources文件夹在其他目录也是管用的,跟Editor文件夹类似,放到其他目录没事,只要是这个文件名就能加载。

②为啥要放不同的目录呢,因为对于一个项目如何有多个同事协同开发,如何都将文件放到根目录的Resources下不便于管理,因为不知道这个文件夹下的其他文件有没有用,都不敢删。

言归正传,那么不同目录下的Resources如何加载呢?

2-1、不同目录下的Resources加载

比如,两个同事,H和Z开发同一个项目,负责开发不同的场景,就各自在根目录下创建一个自己的文件夹,然后在文件夹下创建目录,比如:
【Unity3D日常开发】Unity3D的Resources不同目录的加载分析-LMLPHP
在自己的文件夹的Scripts文件夹下,新建脚本ReLoadTest.cs双击打开脚本,编辑代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReLoadTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        string info = Resources.Load<TextAsset>("loadZ").text;
        Debug.Log(info);
    }

    // Update is called once per frame
    void Update()
    {

    }
}

创建个loadZ.txt文件,随便键入点内容:
【Unity3D日常开发】Unity3D的Resources不同目录的加载分析-LMLPHP
运行程序:
【Unity3D日常开发】Unity3D的Resources不同目录的加载分析-LMLPHP
我还可以加载其他目录下的Resources文件夹内的内容(注意加载文件名):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReLoadTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        string info = Resources.Load<TextAsset>("loadH").text;
        Debug.Log(info);
    }

    // Update is called once per frame
    void Update()
    {

    }
}

运行结果:
【Unity3D日常开发】Unity3D的Resources不同目录的加载分析-LMLPHP

三、后记

如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。


你的点赞就是对博主的支持,有问题记得留言:

博主主页有联系方式。

博主还有跟多宝藏文章等待你的发掘哦:

10-02 17:39