编辑器扩展目录:

1: Editor目录

  Editor文件夹可以在根目录下,也可以在子目录里,夹就可以;
  Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用;
  有时候要一键打包AssetsBundle,或者一键导入字模生成美术字,还有一键增加100个动画状态单元等等都可以在这个文件夹里面扩展实现。
  一些工具类的脚本放在这里,或者是一些编辑时用的DLL, 类似技能编辑器,那么编辑器的代码放在这里.
  很多第三方插件都会有一个Editor文件夹

2: Editor Default Resources目录
 Editor Default Resources注意中间是有空格的, 它必须放在Project视图的根目录下
 Editor Default Resources: 把编辑器用到的一些资源放在这里,比如图片、文本文件、等等;
 和Editor文件夹一样都不会被打到最终发布包里,仅仅用于开发时使用;
 EditorGUIUtility.Load来读取该资源:
 TextAsset text = EditorGUIUtility.Load("test.txt")as TextAsset;

Plugins目录:
  如果做手机游戏开发一般 andoird 或者 ios 要接一些sdk 可以把sdk依赖的库文件 放在这里
  比如 .so .jar .a 文件
  该目录下的文件会被打包到安装包里面;

StreamingAssets目录:
  这个文件夹下的资源会全都打包在.apk或者.ipa
  它不会压缩,而且会原封不动的打包进去,不管里面的资源有没有被使用
  并且它是一个只读的文件夹,就是程序运行时只能读 不能写
  Application.streamingAssetsPath 它会根据当前的平台选择对应的路径

Resources目录:

Resources也是一个类,有它的方法

1: 可以在根目录下,也可以在子目录里,只要名子叫Resources就可以,发布打包的时候会把所有Resources文件夹下的资源一次打包放在一起。比如目录:/xxx/xxx/Resources
2: Resources文件夹下的资源不管你用还是不用都会被打包进.apk或者.ipa,apk是安卓的安装包,ipa是苹果的安装包,使用代码加载的资源必须放在Resouces目录下
3: 代码加载资源,Resource.Load :编辑时和运行时都可以通过Resource.Load来直接读取任何在Resources文件夹下的资源文件
4: AssetDatabase.LoadAssetAtPath():它可以读取Assets目录下的任意文件夹下的资源,它只能在编辑时用,不能写在游戏运行代码中。它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名;

其他文件夹目录:

如果没有用到,就不会被打包到发布包里面去,如果用了就会被打包到发布包里面去,而且普通文件夹里面的资源是没有办法在代码里面来加载使用的。

如果有一个资源,没有在代码里面加载,其实可以不用放在Resources文件夹下的

Resources代码加载资源实例(最好不要这样用)

1.创建Unity项目和文件目录,保存场景

2.创建一个立方体Cube,拖进Resources文件夹当作预制体,删除原来的Cube节点

3.创建一个game_scene脚本挂载在空节点GameObject下,通过代码来加载这个预制体Cube到场景中

 打开game_scene

using UnityEngine;
using System.Collections; public class game_scene : MonoBehaviour { // Use this for initialization
void Start () {
GameObject cube = Resources.Load("Cube") as GameObject;//获取cube资源
GameObject.Instantiate(cube);//实例化cube
} // Update is called once per frame
void Update () { }
}

Unity资源管理

1: 不在代码里面动态加载的,或放到assetBundle里的资源,尽量不要放在Resources文件夹下;代码里面动态加载的资源,放在Resources文件夹下
2: Resouces文件夹使用和不使用的资源都会被打入包中,所以在打包的时候,要把通过assetbundle来加载的资源或不使用的资源,移出Resources目录,然后再打包;
3: 必须要封装一个资源加载的类,来封装好从Resource目录下读取,还是assetbundle下读取;

做法一:

如果把所有用到的资源都塞进Resources文件夹下,那么最终发布的安装包必然是一个大包。

做法二:

如果只把一些用代码加载的资源放进Resources文件夹下,最终打包出来的就是一个小包,然后让玩家安装好后再从互联网上去下载一些AssetBundle资源包,这样就让安装包变的小了些。

这就是为什么有一些重度手机游戏的安装包不大,然后进入游戏的时候还要下载一些东西才能运行,这些东西就是AssetBundle资源,就像王者荣耀有更新的时候进去会再下载几M的文件。

所以要注意的是这种做法一定要在打包的时候,移除Resources文件夹下的可以从AssetBundle资源包中获取的资源,打完包可以再移回来调试之类的。

所以项目里面最好不要用代码Resource.Load去加载资源,这样加载的资源是不能移除Resources文件夹变成AssetBundle资源包的,也不利于后期的更新。

必须要封装一个资源加载的类ResourceManager,来封装好决定是从Resource目录下读取,还是assetbundle下读取;

关于Unity中的特殊文件目录和资源管理(专题四)的更多相关文章

  1. 关于Unity中场景的导入与导出(专题九)

    Unity场景 场景虽然是由场景美术做好的,但是我们经常需要自己去导导出以及从别的项目导入,所以我们需要对场景的导入和导出有一个详细的了解 1: 场景是由美术人员搭建完成后提交给程序;2: 场景一般包 ...

  2. Unity中的资源管理

    一.AssetBundle 相关 Q1:Unity中的SerializedFile是怎么产生的?请问用Unload(false)可以清除吗?因为读取了Bundle里面的内容后已经赋值给其他物体了.而且 ...

  3. 关于Unity中的声音管理模块(专题七)

    声音的要素 1: 音频文件AudioClip2: 音源AudioSource;3: 耳朵AudioListener;//全局只能有一个4: 2D/3D音频;//2D只是简单地播放声音,3D可以根据距离 ...

  4. Unity编程标准导引-Unity中的基本概念-2.1界面概览

    Unity中的基本概念 本文我们介绍Unity中的基本概念,包括:场景.游戏对象.组件.预制件.资源等. 2.1.界面概览 打开Unity之后,我们大概可以看到以上画面,以上画面中即显示了我们最常用到 ...

  5. Unity中巧用协程和游戏对象的生命周期处理游戏重启的问题

    主要用到协程(Coroutines)和游戏对象的生命周期(GameObject Lifecycle)基础知识,巧妙解决了游戏重启的问题. 关于协程,这里有篇文章我觉得写的非常好,理解起来也很容易.推荐 ...

  6. 关于Unity中NGUI的3D角色血条的实现

    首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...

  7. Unity中资源打包成Assetsbundle的资料整理

    最近在研究Unity中关于资源打包的东西,网上看了一堆资料,这里做个整合,说整合,其实也就是Ctrl-C + Ctrl-V,不是原创 首先为了尊重原创,先贴出原创者的文章地址: http://blog ...

  8. Unity中的内存泄漏

    在对内存泄漏有一个基本印象之后,我们再来看一下在特定环境——Unity下的内存泄漏.大家都知道,游戏程序由代码和资源两部分组成,Unity下的内存泄漏也主要分为代码侧的泄漏和资源侧的泄漏,当然,资源侧 ...

  9. 关于Unity中的NGUI精灵

    NGUI精灵实例 1.创建Unity项目工程和文件目录,保存场景 2.创建一个精灵NGUI---->Create---->Sprite,发现它的UI Sprite组件的贴图属性只支持Atl ...

随机推荐

  1. UML的通用机制(三)

     Common Divisions In modeling object-oriented systems, the world often gets divided in several way ...

  2. HTML5学习笔记(二十四):DOM扩展

    DOM扩展 DOM标准扩展最开始都是来自各个浏览器的自定义扩展DOM的功能,后被收录为标准的DOM相关API. 本笔记只记录被各大浏览器支持的标准扩展,对于特定浏览器的专有扩展不讨论. 选择符API ...

  3. nginx 屏蔽恶意请求

    https://www.xlongwei.com/detail/nginx-%E5%B1%8F%E8%94%BD%E6%81%B6%E6%84%8F%E8%AF%B7%E6%B1%82 nginx可以 ...

  4. C#对Sql Server TEXT字段存储的实现(使用存储过程)

    1.这里先准备数据库:在数据库中建立一个News数据表,字段为id,title,content2.建立用于插入news的存储过程:NewsInsert和NewsUpdate,代码如下: ),@cont ...

  5. (原创)c++11改进我们的模式之改进代理模式,实现通用的AOP框架

    c++11 boost技术交流群:296561497,欢迎大家来交流技术. 本次要讲的时候如何改进代理模式,具体来说是动态代理模式,动态代理模式一般实现AOP框架,不懂AOP的童鞋看这里.我前面的博文 ...

  6. lua的模块加载require

    加载指定的模块.首先函数会在 package.loaded 这个表中查看是否已经加载 了 modname 这个模块.如果是,那么 require 会返回保存在 package.loaded[modna ...

  7. Android中XML文件的序列化生成与解析

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  8. Android自定义AlertDialog

    常见的一种方法: [html] view plaincopyprint? AlertDialog.Builder builder; AlertDialog alertDialog; LayoutInf ...

  9. 关于emoji表情

    /** /* 表情编码 /* @param emoji:表情符号 **/ encodeEmoji: function (content) { var imgHtml = ""; v ...

  10. 关于事件冒泡和键盘事件 以及与Angular的区别

    一.事件冒泡 方法一.使用event.cancelBubble = true来组织冒泡 <div @click="show2()"> <input type=&q ...