UGUI UI制作流程规范
Unity在4.6以后 UGUI尽量已经模糊图集的观念,但是我们在游戏中经常需要和NGUI一样获取图片信息功能,这究竟应该如何实现尼?
1、制作UI
其实很多UI制作都比较繁琐,程序员手动找图片,拖来拖去比较麻烦,可以通过写一些工具,比如点击图片右键便可以创建Image(创建GameObj,加入相关Image控件即可)
2、UI资源加载
我们经常在资源加载中需要动态获取某些图片的信息,就比如NGUI可以通过图集获取到里面相关图片的信息等等。可以在加载UI的时候把相关的依赖资源信息(就好像我们平常NGUI UI依赖最多的资源就是图集和picture),我们只需要在Assets目录下创建好相关UI图集的分类的,把相关资源图片归类好,以便我们后面把相关文件打包成.prefab(图集)。简单代码如下:
public class UGUIAltas { List<Sprite> imageList = new List(); public void LoadAllSpriteFromDir() { //获取相关目录文件,把其作为Sprite载入 // AssetDatabase.LoadAssetAtPath<Sprite>(..); } }
我们在windows平台下就可以加载UI的时候 就可以获取当前图集的信息
3、android、ios平台,我们不可能把所有资源文件一起打包进去的,这个时候我们就确实需要创建图集了. 但是我们在windows创建的UI都是直接应用图片的,我们在这些平台又不可能直接引用这些Image, 这个时候最好的解决办法就是把这些归类的图片打包成图集,加入我上属的一些类,把这些作为资源加载进去,同时由于我们的UI资源是引用图片的,因此在打包的时候先要生成相应的图集,然后通过遍历UI资源,导出一个新的UI,引用到相应的图集资源的 .这样就可以和NGUI工作原理差不多了(工具要自己写,程序要解放自己双手嘛)
4、UI资源加载
加载UI资源的时候又怎么加载相应的图集尼?这就涉及到依赖资源打包的问题了, 一般来说Unity 4.6 以上我们使用命令进行打包
AssetBundleMainfest assetBundles = BuildPipe.BuildAssetBundles(,,,);
这是新的打包函数,关键带你在AssetBundleMainfest,它保存了打包资源的相关依赖资源,我们可以从这里获得相关的依赖资源,比如UI A 引用到 图集 B、C,打包A的时候会把依赖资源B、C同时打包进去,记录, 我们可以通过AssetBundleMainfest.GetDirectDependencies()获得相关资源. 因此我们也需要把这个文件打包成.u文件,通过这个文件加载相应的assetbundle文件。