Unity3d 加载预制物 Resource.Load


Unity3d特殊文件夹名称:Resources
特性
	1.读取Resources目录下的文件(第一层目录下的物体)不用分割符,
	2.路径参数以“/”表示文件夹分隔符,最后是所加载的资源名称,不要加后缀名
	3.Resources文件夹可以在Assets根目录下,也可以在子目录里,只要名子叫Resources就可以。比如目录:/xxx/xxx/Resources  和 /Resources 是一样的,无论多少个叫Resources的文件夹都可以。
	4.Resources文件夹下的资源不管你用还是不用都会被以压缩的方式打包进.apk或者.ipa 。
    
Resources.Load路径写法:不要加后缀名,和Resources,  
例子0:在第一层目录下
路径:"Resources/Cube.prefab"
写成:"Cube"  
例子1:
路径:"Resources/effect/building/Cube.prefab"
写成:"effect/building/Cube"  


 
//把资源加载到内存中    
 GameObject prefab =Resources.Load<GameObject>("effect/building/Cube");  
 if (prefab)  
 {  
     //用内存中GameObject模板克隆一个出来,用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载  
     GameObject obj = GameObject.Instantiate(prefab) as GameObject;  
     if (obj)  
     {  
         obj.name = "xxxxxxxxxxx";  
     }  
 }  
 
        // 加载其他非GameObject类型的资源
        Texture2D image = Resources.Load<Texture2D>("Images/1");
        // 测试是否加载成功
        Debug.Log(image.name);

        /*
        卸载资源
        */
        // 卸载非GameObject类型的资源,会将已加载资源及其克隆体剔除
        Resources.UnloadAsset(image);
        // 卸载GameObject类型的资源的克隆体
        Destroy(obj);

Resource.Load :编辑时和运行时都可以通过Resource.Load来直接读取。
Resources.LoadAssetAtPath() :它可以读取Assets目录下的任意文件夹下的资源,它可以在编辑时或者编辑器运行时用,它但是它不能在真机上用,它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。
AssetDatabase.LoadAssetAtPath():它可以读取Assets目录下的任意文件夹下的资源,它只能在编辑时用。它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。


如果是创建NGUI ui预制物的话:

 GameObject obj =NGUITools.AddChild(NGUIRoot.Instance.gameObject, prefab);
  /// <summary>
    /// Resouce加载实例化物体
    /// </summary>
    /// <param name="path"></param>
    /// <returns></returns>
    public static GameObject ResouceIniteGameObjcet(string path)
    {
        var prefab = Resources.Load<GameObject>(path);
        if (prefab)
        {
            var obj = GameObject.Instantiate(prefab);
            if (obj)
            {
                return obj;
            }
        }
        Debug.LogError("ResouceLoad GameObject false:" + path);
        return null;
    }

    /// <summary>
    /// Resouce加载实例化ui
    /// </summary>
    /// <param name="path"></param>
    /// <returns></returns>
    public static GameObject ResouceIniteNGUI(Transform NGUIrootObj,string path)
    {
        var prefab = Resources.Load<GameObject>(path);
        if (prefab)
        {
            var obj = NGUITools.AddChild(NGUIrootObj, prefab);
            if (obj)
            {
                return obj;
            }
        }
        Debug.LogError("ResouceLoad GameObject false:" + path);
        return null;
    }


    /// <summary>
    /// 通过Resouce 加载资源
    /// </summary>
    /// <param name="path">如:路径"Resources/effect/building/Altar.prefab",那么写成"effect/building/Altar"</param>
    /// <returns></returns>
    public static T ResourcesLoad<T>(string path) where T : Object
    {
        var obj =Resources.Load(path, typeof(T)) as T; ;
        if (obj)
        {
            return obj;
        }
        Debug.LogError("ResouceLoad 资源( " + typeof(T).Name + ") false:" + path);

        return obj;
    }

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值