uFrame插件导入报错

最近想研究一下uFrame插件,于是从AssetStore下载了最新的uFrame插件。下载后导入到Unity是两个版本的unitypackage包,分别是uFrame-1.5.1r2和uFrame-1.6.3r1。网上简单查了一下,说两个版本差别还是挺大的,新版本不能向前兼容。

一、挡路的狗(Bug)


我最后选择了最新版本,双击后导入,导入完成后,控制台出现如下错误:
Error1.png
一大堆错误的详细信息就不一一列出了,第一个错误的详细信息如下:

1
Assets/uFrame/MVVM/Framework/Editor/Templates/uFrameTemplates.cs(144,48): error CS0246: The type or namespace name `UGUIExtensions' could not be found. Are you missing a using directive or an assembly reference?

分析了一下,发现是UGUIExtensions这个类因为某个原因没找到,然后,我直接用VS的全局搜索整个解决方案。最后,发现UGUIBindings.cs这个脚本中的UGUIExtensions类被宏命令屏蔽了,因为我使用的Unity版本是5.3.4f1,而UGUIBindings.cs这个脚本的第一行#if UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2直接不支持5.3.4f1,所以解决办法就是直接在第一行末尾追加 || UNITY_5_3
改完保存编译后,果然没错了。本来以为可以开始好好研究了,然而并非如此。

二、拦路虎(Exception)


当我导入ExampleProject案例工程的unitypackage后,一切正常没有报错,接着,我选择Window -> uFrameDesigner打开uFrame的可视化编辑器后,疯狂的抛出如下异常:
Error2.png

异常详细信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
UnityException: Texture 'Header3' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
UnityEngine.Texture2D.GetPixels32 () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/TextureBindings.gen.cs:336)
Invert.Common.TexturesExtensions.CutTextureBottomBorder (UnityEngine.Texture2D texture, Int32 cutSize) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner.Unity/ElementDesignerStyles.cs:1998)
Invert.Core.GraphDesigner.Unity.Schemas.UnityNodeStyleSchema.ConstructHeaderImage (Boolean expanded, Color color, System.String iconName) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner.Unity/Schemas/UnityNodeStyleSchema.cs:57)
Invert.Core.GraphDesigner.Schemas.impl.NodeStyleSchema.GetHeaderImage (Boolean expanded, Color color, System.String iconName) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Schemas/impl/NodeStyleSchema.cs:176)
Invert.Core.GraphDesigner.HeaderDrawer.Draw (IPlatformDrawer platform, Single scale) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Drawers/impl/HeaderDrawer.cs:97)
Invert.Core.GraphDesigner.DiagramNodeDrawer.DrawChildren (IPlatformDrawer platform, Single scale) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Drawers/impl/DiagramNodeDrawer.cs:356)
Invert.Core.GraphDesigner.DiagramNodeDrawer.Draw (IPlatformDrawer platform, Single scale) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Drawers/impl/DiagramNodeDrawer.cs:292)
Invert.Core.GraphDesigner.GenericNodeDrawer`2[TData,TViewModel].Draw (IPlatformDrawer platform, Single scale) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Drawers/impl/DiagramNodeDrawer.cs:64)
Invert.Core.GraphDesigner.DiagramDrawer.Draw (IPlatformDrawer platform, Single scale) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Drawers/impl/DiagramDrawer.cs:146)
Invert.Core.GraphDesigner.DesignerWindow.DrawDiagram (IPlatformDrawer drawer, Vector2 scrollPosition, Single scale, Rect diagramRect) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Windows/DesignerWindow.cs:349)
Invert.Core.GraphDesigner.DesignerWindow.Draw (IPlatformDrawer drawer, Single width, Single height, Vector2 scrollPosition, Single scale) (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner/Windows/DesignerWindow.cs:256)
Invert.Core.GraphDesigner.Unity.ElementsDesigner.OnGUI () (at D:/Invert/uFrameGit/uFrameTools/Invert.Core.GraphDesigner.Unity/ElementsDesigner.cs:256)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)

这时,uFrame的编辑器窗口也是卡死状态。通过分析报错信息发现,是因为一个名为Header3的图片为非可读的,所以报错了。找到Header3图片,然后修改图片格式如下:

Image Setting.png

修改完后所有的都正常了。正在我得意的以为可以好好开始研究一下案例的时候,现实总是残酷的。。。

三、死耗子(Error)


当我选择第一个场景双击打开点击运行后,发现报了如下错误:

Error3.png
详细信息就不贴了,第一个问题很明显,就是相应的场景没有添加进Build Settings,反正也不知道场景的添加顺序,我就直接把案例工程中的所有场景都添加进Build Settings。然后,重新运行就都正常了。终于可以开开心心的研究uFrame了

uFrame-1.5.1r2导入后也有很多错误,不过我懒得研究了。我喜欢用新版的,我是一个喜新厌旧的人。对uFrame-1.5.1r2感兴趣的人可以自己研究一下。


如果本文有错误之处还请帮忙指出。