liangxiegame/QFramework

使用UIKit创建服务创建UIPanel报错

qgqceo opened this issue · 6 comments

使用UIKit创建服务创建UIPanel报错:
Exception thrown while invoking [DidReloadScripts] method 'QFramework.UISerializer:DoAddComponent2Prefab ()' : ArgumentException: Type cannot be null.
QFramework.UISerializer.SetObjectRef2Property (UnityEngine.GameObject obj, System.String behaviourName, System.Reflection.Assembly assembly, System.Collections.Generic.List`1[T] processedMarks) (at Assets/Plugin/QFramework/Toolkits/UIKit/Editor/CodeGen/CodeGen/UISerializer.cs:111)
QFramework.UISerializer.DoAddComponent2Prefab () (at Assets/Plugin/QFramework/Toolkits/UIKit/Editor/CodeGen/CodeGen/UISerializer.cs:51)

另外还要有一个问题。在QFramework设置里面修改了"UIPanel Prefab路径"为其他目录,但是生成的UIPanelPrefab还是在默认的/Art/UIPrefab目录下

好的 谢谢反馈 我尽快修复

我在 v1.0.2 版本 用 Unity 2018 测试了都没有发现上述问题,麻烦给的信息多一些。

image
我也是遇到了,出错了后我把UIprefab上的挂件都去掉了,Bind也去掉了。 但是在之后的每次代码更新时都会报出这个错误

因为生成的UI脚本会执行DoAddComponent2Prefab添加方法, UISerializer.cs的 DoAddComponent2Prefab 方法使用GetAssemblyCSharp()获取程序集, 你的UI脚本所在程序集可能不属于AssemblyCSharp程序集下(例如使用unity的ASMDEF自己管理), 解决方法是加载你自定义的程序集就可以了. (遇见同样问题,我是这样解决, 希望能帮到你)

因为生成的UI脚本会执行DoAddComponent2Prefab添加方法, UISerializer.cs的 DoAddComponent2Prefab 方法使用GetAssemblyCSharp()获取程序集, 你的UI脚本所在程序集可能不属于AssemblyCSharp程序集下(例如使用unity的ASMDEF自己管理), 解决方法是加载你自定义的程序集就可以了. (遇见同样问题,我是这样解决, 希望能帮到你)

具体的加载方式是什么?