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

让用户选择要打包的文件

时至今日,我们选择打包文件的方式依然是在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型数组。

 

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

下期见啦~

实力封装:Unity打包AssetBundle(四)的更多相关文章

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

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

  2. 实力封装:Unity打包AssetBundle(一)

    说明:这是一系列循序渐进的教程,今天先介绍最简单的AssetBundle打包方式. 这是一个由在Unity中需要加载模型而引发出来的一系列坑,为了填坑花了不少时间,如果有需要在Unity中自定义菜单, ...

  3. 实力封装:Unity打包AssetBundle(三)

    前情提要:第二种打包方式 窗口初现 通过前面的两篇教程和一篇番外,我们已经完全实现了打包的功能.但是使用起来总是觉得有些晦涩别扭,如果不告诉别人怎么使用,对方肯定是一头雾水. What?你给我的这是啥 ...

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

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

  5. 实力封装:Unity打包AssetBundle(番外篇)

    前情提要:第二种打包方式. 自定义AssetBundle包扩展名 在之前的教程中,我们已经多次提到过扩展名了,并且也已经说明了如何设置自定义的AssetBundle扩展名.至于为什么还要把它单独拿出来 ...

  6. Unity手游之路<十一>资源打包Assetbundle

    http://blog.csdn.net/janeky/article/details/17652021 在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制 ...

  7. Unity 5.X扩展编辑器之打包assetbundle

    5.x的assetbundle与4.x以及之前的版本有些不同,不过本质是一样的,只不过5.x打包assetbundle更为简单和人性化了,总体来说只需要三个步骤: 第一步:创建打包资源 //这里是一个 ...

  8. Unity打包/读取AssetBundle资源全教程

    Unity 资源AssetBundle打包 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...

  9. 【Unity】AssetBundle的使用——打包/解包

    最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结运行时用A ...

随机推荐

  1. java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one

    一.异常信息 java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have a ...

  2. LeetCode--242--有效的字母异位词

    问题描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagara ...

  3. php值传递和引用传递

    1,参数传值方式有两种,第一种是值传递,第二种引用传递.值传递比较简单,也就是在php中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,而引用传递后可以改变实参的值而类的对象是无 ...

  4. MySQL_插入更新 ON DUPLICATE KEY UPDATE

    平时我们在设计数据库表的时候总会设计 unique  或者 给表加上 primary key 的限制条件. 此时 插入数据的时候 ,经常会有这样的情况: 我们想向数据库插入一条记录: 若数据表中存在以 ...

  5. 2015-09-21 css学习1

    3.设置背景图片 Background-image:url(相对路径) ----123.jpg 图片拉伸铺满: background-size:cover 铺满方向: background-repea ...

  6. ActiveMQ producer 提交事务时突然宕机,会发生什么

    producer 在提交事务时,发生宕机,commit 的命令没有发送到 broker,这时会发生什么? ActiveMQ 开启事务发送消息的步骤: session.getTransactionCon ...

  7. kali-rolling安装nessus 7并创建扫描任务教程

    一.下载 下载页面:https://www.tenable.com/downloads/nessus 如果自己安装的kali是32位的则选择上边的32位版本下载 二.安装 直接用dpkg安装即可: d ...

  8. 关于JAVA的一些知识点

    1.java.lang.Runtime.getRuntime().availableProcessors() Returns the number of processors available to ...

  9. jQuery封装 写的的确不错 转载

    扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入 ...

  10. forget suffix word aby able ability out 1

      1★ aby 2★ ability 3★ able   有`~ 能力 的,具有 这样的能力 的人或物