zoukankan      html  css  js  c++  java
  • unity动态加载场景Resources.Load方法

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

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

    具体看下图:

    在二级目录:

     

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

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

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

    [csharp] view plain copy
    1. Texture2D aa = (Texture2D)Resources.Load("FullScreenfild/ic_heng_touxiangda") as Texture2D;
    2. Sprite kk = Sprite.Create(aa, new Rect(0, 0, aa.width, aa.height), new Vector2(0.5f, 0.5f));
    3. 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");





    你以为你在合群,其实你在浪费青春
  • 相关阅读:
    设计模式开篇——7大设计原则
    MySQL MVCC专题
    Spring常考的面试题
    HashMap常考面试题
    Equals和==的比较
    高并发编程
    一文读懂JVM
    scala实现定时任务的方法
    PLAY2.6-SCALA(十二) 表单的处理
    PLAY2.6-SCALA(十一) 模板常用场景
  • 原文地址:https://www.cnblogs.com/soviby/p/10013351.html
Copyright © 2011-2022 走看看