发布对话框
打开发布设置对话框:主菜单“文件”->“发布设置”。或点击主工具栏上的发布按钮旁边的小三角形。
左边是包列表,右边是选中包的发布设置。设置分为本包的设置和全局设置,点击右上角的黄色链接进入全局设置。全局设置作用到所有包。
文件名
发布的文件名。这个文件名与包名称不同。当我们载入包时,需要使用这里设定的文件名,而当创建对象时,需要使用包名称。例如
UIPackage.AddPackage('file_name'); //这里是发布的文件名。
UIPackage.CreateObject("Package1','Component1'); //这里的Package1是包的名称。
发布路径
发布内容放置的目录。对于Unity平台,建议直接发布到Unity工程内的目录里,这样编辑器会自动根据Unity的版本给新发布的纹理提供正确的meta文件。如果不是这样,那么当你手动拷贝到Unity工程里时,请注意自行检查纹理的设置是否符合要求。
打包方式
可以选择打包成一个包或者两个包。两个包则将XML定义和图片等资源分开。这样做的好处是如果只修改了组件,没有加入新的素材或删除素材,则可以只发布和推送定义包给用户,减少用户的流量消耗。
生成代码
生成绑定的代码。生成绑定的代码可以更直观地访问组件的各个节点,但也在一定程序度上会造成美术工作和程序员工作的耦合。
压缩描述文件
Laya和Egret项目提供了这样一个发布选项,通过此选项可以控制发布的描述文件是否压缩。默认是压缩的。如果你已经使用了web服务器的gzip压缩功能,又或者打包时会自行压缩,那可以选择不压缩的格式。
使用二进制格式
发布格式设定为二进制格式。使用二进制格式可以减少降低时载入包的消耗,推荐使用。这种格式需要一定版本以上的SDK支持:Unity-3.0,Cocos2dx-2.0,其他SDK请使用2018年9月后的源码。如果你是从旧的SDK升级,请查看升级说明:升级到二进制包格式。
仅发布定义
通常发布的内容包括素材(图片、声音等)和XML定义文件, 如果你没有增删改素材,那么你可以仅发布XML定义文件,避免了重新生成图集带来的时间消耗。纹理集定义
None POT
None Power Of Two的简写,勾选后,允许输出纹理的大小不限定为二的幂。注意,有些纹理格式规定大小必须为二的幂。
正方形
勾选后,限制输出纹理的宽和高相等。
允许旋转
允许旋转图片以达到更大的纹理空间利用率。(Egret和LayaAir平台不支持)
分离Alpha通道
这个选项仅适用于Unity。通过此方法,可以在Unity里将原纹理设置为不支持Alpha通道的格式(例如ETC1)以减少内存占用。FairyGUI-unity SDK提供了专门的着色器进行混合。
纹理集定义
对于支持纹理集的平台,例如Unity/Egret/Starling,你可以规划图片放到不同的纹理集内。这项功能的意义在于:
图片太大太多,假设纹理集最大支持2048×2048(这个可调整),超出此范围的你可以使用多个纹理集;
图片用途不一致,例如一张尺寸比较大的色彩丰富的背景图就不适合和色彩比较单一的UI素材放到一起,这样会使最终发布的png图片过大。将超大尺寸背景图单独放一张纹理集是一个比较好的解决方案;
图片的特性不一致,例如在Unity平台里,你可以为纹理集设置单独的Filter Mode、压缩格式等等。
这里只提供10张纹理集的设置,如果一个包的纹理集超过10张,建议考虑分包。
压缩
将纹理使用PNG8格式压缩。这个压缩方式能大大降低PNG文件大小,但也会使图片失真比较严重,特别是色彩比较丰富,或者含有渐变的图片,请谨慎使用。Unity引擎不要使用这个压缩功能,因为Unity对纹理的压缩应该在Unity里设置,Unity在打包时会自动根据设置的格式压缩纹理,使用这里的压缩除了降低图片质量外没有任何减少文件体积的作用。资源排除设置
如果一些素材,只用于测试用途,例如一个装载器,放一个图片进去只用于看效果,但这个图片是不随包发布的(后续可能通过外部加载),那么可以在这个界面里将这个图片拖入,那么发布时就不会包含这个图片了。
发布代码设置
代码保存路径
发布的代码保存的路径。
组件名前缀
给每个组件生成的类名加上前缀。例如如果组件名为“Component1”,这里设置前缀为“T”,那么最后生成的类名为“TComponent1”。前缀可以为空。注意,如果组件名是中文,会被自动转换为拼音。
成员名称前缀
给组件里每个元件的名称前加上前缀。例如如果元件名称为“n10”,这里设置前缀为“m_”,那么最后生成的类成员的名称为“m_n10”。前缀可以为空,但不建议这样做。因为元件名称很可能和类的一些属性和方法名称冲突。例如,如果元件名称为“icon”,那就和GObject的icon属性冲突了。
不生成使用默认名称的成员
勾选后,对于”n1”,”n2”等这种系统自动生成的名称,或者“title”,“icon”等这种扩展组件里约定的名称,将不会为这些名称的元件生成成员获取代码。如果一个组件里,全部都是这些名称的元件,那么整个组件都不会生成代码。例如,一个按钮,里面只有名称为“title”和“icon”的元件,则不会为这个按钮生成代码,因为使用基类GButton已经足够。
使用名称获取成员对象
如果不勾选,组件初始化时使用索引获得子对象;如果勾选,则使用名称获得子对象。前者效率高,推荐使用;后者则兼容性较好,例如,如果调整了元件的顺序,不会发生异常。
包名称
对于AS3代码,是指发布的代码的package;对于C#代码,是指发布的代码的namespace;对于Typscript代码,是指发布的代码的module;对于C++代码,是指发布的代码的namespace。
代码类型
对于Laya引擎,你可以选择发布AS3代码还是TS代码。使用发布出来的代码的方式:
//首先要调用BindAll。发布出来的代码有个名字为XXXBinder的文件
//注意:一定要在启动时调用。
XXXBinder.BindAll();
//创建UI界面。注意:不是直接new XXX。
XXX view = XXX.CreateInstance();
view.m_n10.text = ...;
发布代码时会用到代码模板。代码模板在编辑器安装目录下的template目录下。如果你需要自定义模板,需要将template目录拷贝到UI项目的根目录下,再做修改。模板里支持的参数有:
Component.template
-------------
{packageName} UI模块名
{componentName} UI组件父类名
{className} UI组件类名
{uiPkgName} UI资源包名
{uiResName}UI资源名
{uiPath} UI资源路径
Binder.template
-------------
{className} UI模块名+"Binder"
{packageName} UI模块名
网友评论