我正在构建一个基于UITableView
的Unity插件,它将由游戏开发者嵌入到他们的Unity应用程序中。我使用标准方法将可重复使用的单元格出列,UITableViewCell
包含简单的UILabel
和UIImageView
。 UIImageView
内的图像是通过异步请求加载的。
当将插件作为独立的Objective-C应用程序启动时,根本没有可用性问题(特别是滚动效果很好,没有延迟)但是当在Unity内部时,存在随机出现的“粘性”滚动问题,即视图滚动但没有惯性。我无法确定导致此行为的确切操作,但通常在我向一个方向快速滚动或者来回移动时发生。当我通过顶部或底部滚动视图时,错误消失(触发“反弹”效果,我猜这会导致一些硬刷新)。
有一个非常类似的问题描述为here。他们建议修复
#define USE_DISPLAY_LINK_IF_AVAILABLE 0
在Unity生成的AppController.mm文件中。不幸的是,这个解决方案对于将集成我们插件的游戏开发者来说是不可行的,因为它关闭了最快和最可靠的计时解决方案,并且需要回退到其他计时系统,这会导致游戏本身滞后或错过一部分触摸和加速计事件。
我很可能会覆盖drawRect
UITableViewCell
以减少渲染时间和内存使用量,如果失败,请在OpenGL中编写插件版本。但是,我想知道是否有人有类似的问题,并且知道更快的修复,无论是在Objective-C还是在Unity内部,都是非破坏性的(如上所述的定时修复)。非常感谢。
答案 0 :(得分:3)
我遇到了你所描述的同样的麻烦。我通过评论
来修复它 //#define USE_DISPLAY_LINK_IF_AVAILABLE 0