unity动态加载Resources.Load方法
2016-04-08 09:46
666 查看
Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹,这个命名是U3D规定的方式,然后把资源文件放进去,当然也可以在Resources中再创建子文件夹,代码加载时需要添加相应的资源路径。
下面是一个简demo,两个预设场景,Cube和scene,其中Cube放在Resource中的Prebs中,而scene放在Resources跟目录下,而Herarchy面板里没有这两个场景。
具体看下图:
下面实现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");
下面是一个简demo,两个预设场景,Cube和scene,其中Cube放在Resource中的Prebs中,而scene放在Resources跟目录下,而Herarchy面板里没有这两个场景。
具体看下图:
下面实现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");
相关文章推荐
- Unity3D游戏开发从零单排(三) - 极速创建狂拽酷炫的游戏地形
- 【Unity3D实战】零基础一步一步教你制作跑酷类游戏(填坑完整版)
- unity 运行 iOS模拟器报错 dyld: Symbol not found: __BeginEventWithLabel
- Unity Shaders and Effects Cookbook (3-3) 创建 BlinnPhong 光照模型
- Unity中Time.deltaTime的使用
- IOC使用Unity 实现依赖注入
- [Unity] transform.Translate vs rigidbody.MovePosition?
- [Unity] unity3d中脚本生命周期(MonoBehaviour lifecycle)
- [Unity] MonoBehaviour lifecycle and leaks explained
- [Unity热更新]tolua# & LuaFramework(五):.proto转换为.lua
- Unity3d 残影效果(狂拽炫酷叼炸天)
- Disunity_V0.5.0 提取Unity生成的Apk的资源
- Unity this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime)
- Unity做AR
- Unity3D for VR 学习(10): Unity LOD Group 组件
- Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)
- Unity3D for VR 学习(8): Unity Shader概述
- Unity3D for VR 学习(7): 360°全景照片
- Unity3D for VR 学习(6): 再次温故知新-3D数学
- Unity3D for VR 学习(4): 自绘摄像机的视口区域锥体