• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

unity动态加载Resources.Load方法

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1007/44.html

unity动态加载Resources.Load方法

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

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

具体看下图:

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

 


		
  1.  
    using UnityEngine;
  2.  
    using System.Collections;
  3.  
     
  4.  
     
  5.  
     
  6.  
    public class LoadResDemo : MonoBehaviour
  7.  
    {
  8.  
     
  9.  
    private string cubePath = "Prebs/Cube";
  10.  
    private string spherePath = "scene";
  11.  
    void Start()
  12.  
    {
  13.  
    //把资源加载到内存中
  14.  
    Object cubePreb = Resources.Load(cubePath, typeof(GameObject));
  15.  
    //用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
  16.  
    GameObject cube = Instantiate(cubePreb) as GameObject;
  17.  
     
  18.  
    //以下同理实现scene的动态实例化
  19.  
    //把资源加载到内存中
  20.  
    Object scene = Resources.Load(spherePath, typeof(GameObject));
  21.  
    //用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
  22.  
    GameObject aa = Instantiate(scene) as GameObject;
  23.  
    Debug.Log(aa+"sss");
  24.  
    }
  25.  
     
  26.  
    }

这样把脚本绑定到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。


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


 

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

 this.GetComponent().sprite = Resources.Load("78");
  this.GetComponent().sprite = Resources.Load("78");



上篇:上一篇:Unity的WWW类的用法整理
下篇:下一篇:U3D协同程序实现游戏中AI(自动行走和发现目标)