当前位置:   article > 正文

Unity3d 加载预制物 Resource.Load_resources.load

resources.load
  1. Unity3d特殊文件夹名称:Resources
  2. 特性
  3. 1.读取Resources目录下的文件(第一层目录下的物体)不用分割符,
  4. 2.路径参数以“/”表示文件夹分隔符,最后是所加载的资源名称,不要加后缀名
  5. 3.Resources文件夹可以在Assets根目录下,也可以在子目录里,只要名子叫Resources就可以。比如目录:/xxx/xxx/Resources 和 /Resources 是一样的,无论多少个叫Resources的文件夹都可以。
  6. 4.Resources文件夹下的资源不管你用还是不用都会被以压缩的方式打包进.apk或者.ipa 。
  7. Resources.Load路径写法:不要加后缀名,和Resources,
  8. 例子0:在第一层目录下
  9. 路径:"Resources/Cube.prefab"
  10. 写成:"Cube"
  11. 例子1:
  12. 路径:"Resources/effect/building/Cube.prefab"
  13. 写成:"effect/building/Cube"
  14. //把资源加载到内存中
  15. GameObject prefab =Resources.Load<GameObject>("effect/building/Cube");
  16. if (prefab)
  17. {
  18. //用内存中GameObject模板克隆一个出来,用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
  19. GameObject obj = GameObject.Instantiate(prefab) as GameObject;
  20. if (obj)
  21. {
  22. obj.name = "xxxxxxxxxxx";
  23. }
  24. }
  25. // 加载其他非GameObject类型的资源
  26. Texture2D image = Resources.Load<Texture2D>("Images/1");
  27. // 测试是否加载成功
  28. Debug.Log(image.name);
  29. /*
  30. 卸载资源
  31. */
  32. // 卸载非GameObject类型的资源,会将已加载资源及其克隆体剔除
  33. Resources.UnloadAsset(image);
  34. // 卸载GameObject类型的资源的克隆体
  35. Destroy(obj);
  36. Resource.Load :编辑时和运行时都可以通过Resource.Load来直接读取。
  37. Resources.LoadAssetAtPath() :它可以读取Assets目录下的任意文件夹下的资源,它可以在编辑时或者编辑器运行时用,它但是它不能在真机上用,它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。
  38. AssetDatabase.LoadAssetAtPath():它可以读取Assets目录下的任意文件夹下的资源,它只能在编辑时用。它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。

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

 GameObject obj =NGUITools.AddChild(NGUIRoot.Instance.gameObject, prefab);
  1. /// <summary>
  2. /// Resouce加载实例化物体
  3. /// </summary>
  4. /// <param name="path"></param>
  5. /// <returns></returns>
  6. public static GameObject ResouceIniteGameObjcet(string path)
  7. {
  8. var prefab = Resources.Load<GameObject>(path);
  9. if (prefab)
  10. {
  11. var obj = GameObject.Instantiate(prefab);
  12. if (obj)
  13. {
  14. return obj;
  15. }
  16. }
  17. Debug.LogError("ResouceLoad GameObject false:" + path);
  18. return null;
  19. }
  20. /// <summary>
  21. /// Resouce加载实例化ui
  22. /// </summary>
  23. /// <param name="path"></param>
  24. /// <returns></returns>
  25. public static GameObject ResouceIniteNGUI(Transform NGUIrootObj,string path)
  26. {
  27. var prefab = Resources.Load<GameObject>(path);
  28. if (prefab)
  29. {
  30. var obj = NGUITools.AddChild(NGUIrootObj, prefab);
  31. if (obj)
  32. {
  33. return obj;
  34. }
  35. }
  36. Debug.LogError("ResouceLoad GameObject false:" + path);
  37. return null;
  38. }
  39. /// <summary>
  40. /// 通过Resouce 加载资源
  41. /// </summary>
  42. /// <param name="path">如:路径"Resources/effect/building/Altar.prefab",那么写成"effect/building/Altar"</param>
  43. /// <returns></returns>
  44. public static T ResourcesLoad<T>(string path) where T : Object
  45. {
  46. var obj =Resources.Load(path, typeof(T)) as T; ;
  47. if (obj)
  48. {
  49. return obj;
  50. }
  51. Debug.LogError("ResouceLoad 资源( " + typeof(T).Name + ") false:" + path);
  52. return obj;
  53. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/390852
推荐阅读
相关标签
  

闽ICP备14008679号