→→前情提要:窗口初现←←

让用户选择要打包的文件

时至今日,我们选择打包文件的方式依然是在Project面板或Hierarchy面板中用鼠标点选。现在既然有了窗口,我们自然希望可以将所有文件罗列在窗口中,然后在窗口中进行选择,今天就来实现这一功能。

既然要显示所有的文件,我们就必须首先知道工程目录下都有哪些文件,并获取它们的路径。网上关于递归获取某一目录下的所有文件的例子有很多,这里就不细说了,但是要注意过滤掉.meta的文件,这是Unity为每个资源文件自动生成的,里面存储了资源的GUID,Unity就是通过这个GUID来引用资源的。Unity的资源文件都放在Assets文件夹下,打包的API也只能打包这个文件夹下的文件。

我们将获取出来的所有资源文件的相对路径(Assets开头的文件路径)都存放到一个string链表中。这个链表可以按如下定义,此外还需要定义一个和链表同样长度的bool型数组,以及一个Vector2类型的向量↓↓

  List<string> assetsPath = new List<string> (); bool[] flags = new bool[assetsPath.Count]; Vector2 scallPos;

然后在OnGUI函数中加入如下代码↓↓

  GUILayout.Space (20);GUILayout.Label("Select the Files you want to package:"); scallPos = EditorGUILayout.BeginScrollView (scallPos, GUILayout.Height(300)); foreach (int i = 0; i < assetsPath.Count; i++) {  string lable = Path.GetFileName (assetsPath[i]);  flags[i] = EditorGUILayout.ToggleLeft (lable, flags[i]); } EditorGUILayout.EndScrollView ();

点击菜单运行窗口,已经能看到效果了,还不错。

几点说明↓↓

  1. GUILayout.Space(int)用来画出一个空白区域,主要是为了让控件之间间隔大一点,不至于太挤。

  2. EditorGUILayout.BeginScrollView可以创建一个滚动视图,必须和EndScrollView一起使用,当资源文件很多很多的时候,让它们滚动起来是很有必要的。BeginScrollView的第一个参数是一个Vector2向量,表示滚动位置,同时返回值也必须赋回给同一个变量,否则视图是滚不动的,这也就是为什么要定义一个scrollPos变量的原因。第二个参数给滚动区域限制了一个高度。

  3. Path.GetFileName用来获取一个路径中的文件名(包括扩展名),Path类还有很多关于路径操作的静态函数,有兴趣可以自己挖掘。

  4. EditorGUILayout.ToggleLeft创建一个框在左,文字在右的复选框。第一个参数是框旁边要显示的文字,第二个参数是一个bool变量,用来表示复选框的选中状态。同样,函数返回值也要付给这个参数,否则复选框是不能选择的,所以我们要定义一个和assetsPath同样长的bool型数组。

基本的操作就这些了,有了这些基础,做出其他花样就不是问题了。

下期见啦~

转载于:https://www.cnblogs.com/huwenya/p/9246238.html

实力封装:Unity打包AssetBundle(四)相关推荐

  1. 实力封装:Unity打包AssetBundle(大结局)

    →→前情提要:让用户选择要打包的文件←← 大结局:更多选择 Unity打包AssetBundle从入门到放弃系列终于要迎来大结局了[小哥哥表示实在写不动了o(╥﹏╥)o]... 经过上一次的教程,其实 ...

  2. unity 打包AssetBundle

    unity提供了assetbunlde机制,下面介绍一种方法将指定目录下的所有文件打包成AssetBundle 先说明步骤,再上代码. 步骤一.选择要打包成assetbundle的目录,本案例使用as ...

  3. Unity打包AssetBundle自动分析资源依赖关系(包括UGUI图集打包)

    https://blog.csdn.net/u012740992/article/details/79371986 怎么分析资源的依赖关系呢,并设置AssetBundleName呢? 我们检测资源之间 ...

  4. 使用Unity打包Assetbundle填坑记录(随时更新)

    Unity版本=2017.4.13f1 问题1: Cannot mark assets and scenes in one AssetBundle 出现原因:使用Unity 打包场景文件为AssetB ...

  5. 实力封装:Unity打包AssetBundle(二)

    →前情提要:Unity最基本的AssetBundle打包方式. 第二种打包方式 Unity提供的BuildAssetBundles API还有一个重载形式,看下面↓↓ public static As ...

  6. Unity5.x 依赖关系打包 AssetBundle 研究

    Unity5.x新依赖打包及加载 https://blog.csdn.net/strugglebydreamlin/article/details/78031086 demo:https://pan. ...

  7. Unity资源管理(四)-AssetBundle使用模式

    Unity资源管理(四)-AssetBundle使用模式 英文原文:https://unity3d.com/cn/learn/tutorials/topics/best-practices/asset ...

  8. Unity PIC 打包assetBundle报错

    Unity PIC 打包assetBundle报错 修改平台设置,讲LitJson 从android 目录移出来,重启unity.就可以读取到引用关系了.

  9. [FairyGUI][Unity]FGUI资源打包AssetBundle

    参考资料3 将发布后的文件打包为两个AssetBundle,即定义文件和资源各打包为一个bundle(desc_bundle+res_bundle).这样做的好处是一般UI的更新都是修改元件位置什么的 ...

  10. Unity资源管理——AssetBundle构建/打包

    1.为资源设置 assetBundleName 和 assetBundleVariant. 可以在资源的 Inspector 上手动设置,也可以通过 AssetImporter 进行设置. Asset ...

最新文章

  1. 如何利用远程桌面连接CentOS的Desktop版本
  2. Python实训day02pm【元组、字典、lambda】
  3. vue-cookies的使用
  4. 抖音上python有用吗_专栏 | 如何在抖音上找到漂亮小姐姐?这里有个Python抖音机器人...
  5. 使用花生壳将内网服务发布到外网
  6. 很多的计算机英语词汇是通过,计算机英语词汇隐喻分析
  7. 计算机上打印机删除不了怎么办,打印任务无法删除怎么办?
  8. 自动化测试 (二) 连连看外挂
  9. Alpha 冲刺(3/10)
  10. 容器学习点点滴滴(三)
  11. Python写简单的拼图小游戏
  12. 【nlp学习】中文命名实体识别(待补充)
  13. C++图书管理查询系统
  14. SQL Saturday活动再起
  15. kubernetes (二):通过Tectonic在本地搭建多节点k8s集群
  16. “我的世界开服侠”使用教程
  17. linux 网路测速服务器,Linux下3种常用的网络测速工具
  18. VirtualXposed 不支持32位应用 32位无法安装问题解决办法
  19. Ubuntu 14.04安装pcitx拼音五笔输入法
  20. php functions with example(http://www.phpchina.com/html/05/n-22205.html)

热门文章

  1. 卷积网络如何让测试集准确率上升_调试深度学习网络
  2. PHPExcel存放多个sheet报错:Invalid character found in sheet title
  3. 海边二本计算机学校,读二本不丢人!这些二本大学实力都很强,就业率也不差!...
  4. 据说微软已撤销了测试部门?
  5. 在X79 LGA2011上改造安装利民AX120R LGA1200风扇
  6. 管理新语:一项工作如果一定要上,不要等准备好,立即上
  7. 软件对操作系统有要求?操作系统不符合要求你软件就不玩了?
  8. 热烈庆贺本博客9级及排名138
  9. mercurial/hg:大哥什么年代了连续传功能都没有?
  10. VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”