unity动态加载Resources.Load方法

Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹,这个命名是U3D规定的方式,然后把资源文件放进去,当然也可以在Resources中再创建子文件夹,代码加载时需要添加相应的资源路径。

下面是一个简demo,两个预设场景,Cube和scene,其中Cube放在Resource中的Prebs中,而scene放在Resources跟目录下,而Herarchy面板里没有这两个场景。

具体看下图:更多内容请关注微信公众号:unity风雨路

下面实现Resources.Load资源的加载。
代码如下:

 

using UnityEngine;
using System.Collections;



public class LoadResDemo : MonoBehaviour
{

    private string cubePath = "Prebs/Cube";
    private string spherePath = "scene";
    void Start()
    {
        //把资源加载到内存中
        Object cubePreb = Resources.Load(cubePath, typeof(GameObject));
        //用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
        GameObject cube = Instantiate(cubePreb) as GameObject;

        //以下同理实现scene的动态实例化
        //把资源加载到内存中
        Object scene = Resources.Load(spherePath, typeof(GameObject));
        //用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
        GameObject aa = Instantiate(scene) as GameObject;
        Debug.Log(aa+"sss");
    }

}

这样把脚本绑定到Herarchy面板的相机上运行就可以实现动态加载了。

如图:

 

声明:

上面的方法在unity5.3.2f1版本中使用会出错(上面方法版本忘记了但一定是unity5.3.2f1之前的版本)。所以后来的方法换成了这种(如下代码):

 GameObject vrgiftsall = Resources.Load("Prefab/VR/biggiftsvr")as GameObject;
 GameObject biggiftvrload = Instantiate (vrgiftsall) as GameObject;


 

上述代码中biggiftsvr是放在下路径为Resources/Prefab/VR的一个物体,随便定义个GameObject用来加载过来,然后再实例化为biggiftvrload ,所以你要使用的真正的GameObject是biggiftvrload 。

 

------------------------------------------------------------------------------------------

 

下面讲如何加载图片(Texture)并转为sprite.用的依旧是unity5.3.2f1版本。

 

如下面代码:

1.在Resources目录下有ic_heng_touxiangda这张sprite,首先用Texture2D的方式加载到aa上。

2.然后再定义一个Sprite将Textrue2D转为sprite。Sprite.Create()这个方法括号里第一个参数是一张Texture2D图片,第二个是生成sprite的Rect(也就是位置和大小),第三个是生成的pivot位置(中心点)。

3.之后将sprite(也就是下面的kk)赋值给一个Image组件上就 OK。

 Texture2D aa = (Texture2D)Resources.Load("FullScreenfild/ic_heng_touxiangda") as Texture2D;
 Sprite kk = Sprite.Create(aa, new Rect(0, 0, aa.width, aa.height), new Vector2(0.5f, 0.5f));
 UIinit.CAVA.transform.FindChild("Panel/head_portrait_bg/head_portrait/Image").GetComponent<Image>().sprite = kk;

 

 

 

 

 

或者是下面方法:(注意Resources的路径中是不能有下划线的不然是无法识别的)

 this.GetComponent<Image>().sprite = Resources.Load<Sprite>("78");
  this.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("78");

 

 

Unity中,`Resources.Load` 是一种常见的用于加载资源的方法,适用于多种资源类型,包括 `.dat` 文件。`.dat` 文件通常用于存储二进制数据或文本数据,可以通过 `Resources.Load` 加载为 `TextAsset` 类型,然后根据其内容进行处理。 要使用 `Resources.Load` 加载 `.dat` 文件,首先需要确保文件位于 `Assets/Resources` 文件夹或其子目录中。然后,可以通过以下代码加载文件: ```csharp TextAsset datFile = Resources.Load<TextAsset>("Path/To/File"); ``` 其中 `"Path/To/File"` 是相对于 `Resources` 文件夹的路径,不需要包含文件扩展名 `.dat`。例如,如果文件位于 `Assets/Resources/Data` 文件夹中,并且名为 `data.dat`,则代码应为: ```csharp TextAsset datFile = Resources.Load<TextAsset>("Data/data"); ``` 加载完成后,可以通过 `datFile.text` 获取文件的文本内容,或者通过 `datFile.bytes` 获取其二进制数据 [^4]。 例如,以下代码演示了如何加载并读取 `.dat` 文件的文本内容: ```csharp using UnityEngine; public class LoadDatFile : MonoBehaviour { private void Start() { TextAsset datFile = Resources.Load<TextAsset>("Data/data"); if (datFile != null) { string content = datFile.text; Debug.Log("File content: " + content); } else { Debug.LogError("Failed to load .dat file."); } } } ``` 如果 `.dat` 文件存储的是二进制数据,则可以使用 `datFile.bytes` 来访问数据,并根据需要进行解析。 需要注意的是,`Resources.Load` 是同步加载方法,适用于小型资源的加载。如果需要加载较大的资源或需要异步加载以避免阻塞主线程,可以考虑使用 `ResourceRequest` 或 `Addressables` 等更高级的资源加载方式 [^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值