赞
踩
-
- 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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。