One
最近对接了个unity3D做的小游戏到android项目中:游戏嵌入项目的界面且非全屏显示,项目几经波折,到我手上的时候,已经采用了在同一个activity中用两个View来分别显示android界面和unity游戏界面部分,显示android部分的View在上层,通过显示与隐藏操作实现对于下层unity游戏界面View的显示和隐藏。
Two

所以本篇暂时只记录下对接过程中遇到的坑,可能夹杂有一些吐槽,如果谈及的问题刚好你也遇到了并给了你一些启发,那感情好。至于如何在一个android项目中嵌入unity项目,等稍得空再另开一篇简述,以便日后查阅。

Three

和博主对接的人不懂android,博主不懂unity,真是GG。unity给博主的初步印象就是做动画方面比较擅长,但是呢也对于android设备的性能要求较高,同型号的设备,在博主这测试往往啥事没有,一交给测试就各种问题,卡顿,花屏,甚至卡死。往往这种不报错的问题是最为头痛的,而且还出现在对接项目中,双方都没改动代码的情况下出错却不报错,彼此大眼瞪小眼(`_ゝ´) (`ι_´メ)。

Foru

不报错也要解决啊,只能祭出 Log大法,对于每一关键步骤,都打印日志查看,最终锁定了就是两个view的显示切换的时候,往往会出现不可控的卡顿问题。初步归结为android设备性能问题(或者unity方优化不足),一时半会儿解决不了(总不能大批量换高性能的设备吧)。

Five

坑一:当将显示android界面的view隐藏,露出下方的unity的view的时候,这个过程有可能需要等待不可控的时间,而且每台设备每个时间可能不完全一样,用户体验为卡顿

解决方案:添加一个加载中界面,强制等待1-3秒再切换至显示unity界面的view

Six

坑二:当unity游戏结束,需要将android的view设置为显示来达到隐藏unity界面的效果时,明明已经设置了visibility,但是界面不出现,要等待很久或者卡死

这个问题当时我几乎认为要无解了,百度没有相似案例,log已锁定就是这个步骤出问题了,但是咋办呢?百思不得其解,说来也巧了不是,正当我对着卡死的界面愁眉苦脸的时候,不小心点出了一个弹窗,界面顿时就刷新了,我猛地一个机灵,为了确认是否有效,又反复试了多次,果然,在设置了visibility之后卡死这段时间内,如果跳一个弹窗出来,界面就会刷新
先别急,我们来稍微探究下原因:设想是弹窗的出现达到了刷新界面的效果,那么调用view自身的invalidate和postInvalidate是否可行?view中的子view 即 RecyclerView的adapter如果调用notifyDataChanger呢?亦或者调用一个Toast呢?试过之后发现....不行,好吧,我只能先用看起来很low的弹窗方案了:设置了visibility之后,调用一个透明弹窗,一秒钟(甚至更短时间)后自动关闭,这样用户几乎毫无察觉。

Seven

坑三:当界面上非全屏显示unity游戏时,如果此时剩余空间内用一个view在播放视频,那么有概率出现屏幕花屏的现象,没错,是花屏,而且换个视频就没事了,同样格式的视频,至今不明白这个问题
好在只是特定一个视频会这样,不知有没有路过的大神知道咋回事的,望悉知。

End
初次接触unity,可以说很印象深刻了,鉴于以上问题百度无果,特此记录,以免少走弯路。

随笔:说说第一次在android中嵌入非全屏显示的unity游戏时的坑之——界面切换时出现延迟/卡顿/花屏等现象解决方法相关推荐

  1. android模拟器跑的时候卡,安卓模拟器运行卡顿原因,和七大解决方法

    在使用模拟器时很多大佬都遇到过在使用模拟器玩游戏时的卡顿和闪退等问题.但是并不是所有的卡顿和闪退都能把原因丢到电脑是否开启VT这个事情上的,比如目前发现装有360安全卫士的电脑,在开启核晶防护功能后, ...

  2. 5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示

    本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

  3. 【聊技术】在Android中实现自适应文本大小显示

    本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

  4. android客户端在多个界面切换时保持socket的链接的实例

    鉴于自己的痛苦,研究一个socket在多个界面切换时保持链接的问题,令我纠结很久,现在我提供客户端的源码给有需要的人参考. 1.ApplicationUtil类: import java.io.Dat ...

  5. 2022.05.20-电脑切换全屏与非全屏(特别是谷歌浏览器)的时候会发生卡顿黑屏

    切换全屏与非全屏的时候会发生卡顿黑屏 可能是自己之前插的两块屏幕,后来一块屏幕断掉了,再将那一块屏幕接上去就好了 这个很有可能是谷歌浏览器造成的,因为往往是谷歌浏览器切屏的时候才会出现这个问题,而其他 ...

  6. android中textview记录日志,Android中TextView属性全纪录

    关于TextView TextView是Android开发中最最常见的控件之一,在API记录的属性有很多,但实际开发中,有很多很少涉及但是却非常有用的属性,值得去尝试,所以记录下来,既可以给大家提供参 ...

  7. Word文件中嵌入的Visio文件显示为unknown对象解决方式

    今天在处理某个Word文件时,发现嵌入的Visio对象变成了unknown对象,右键点击只有转换的选项,别人打开又是正常,网上冲浪,找到的解决方法试了一下都没有解决. 后面发现是由于vsdx文件默认打 ...

  8. Android 性能监测工具,优化内存、卡顿、耗电、APK的方法

    导语     安卓大军浩浩荡荡,发展已近十个年头,技术优化月新日异,如今 Android 9.0 代号P  都发布了,Android系统性能已经非常流畅了.但是,到了各大厂商手里,改源码自定系统,使得 ...

  9. 关于“android4.0中,在通话界面进入锁屏界面后出现两个电话图标”这一Bug的解决方法

    bug名称: android4.0中,在通话界面进入锁屏界面后出现两个电话图标          1. 问题出现的流程与原因:             在通话界面中熄屏后第一次点亮屏幕时会出现二个电话 ...

最新文章

  1. 在C#里实现DATAGRID的打印预览和打印
  2. WebPart(SharePoint)中如何使用自定义的Javascript和css样式
  3. jvm的参数含义及设置
  4. Python之re模块 —— 正则表达式操作
  5. 短线王的盯盘宝怎么样_2022考研英语韦林全程班怎么样?资源分享
  6. jmeter --- 基于InfluxDBGrafana的JMeter实时性能测试数据的监控和展示
  7. 服务器端虚拟化安卓,安卓服务器端实例
  8. 前端开发中如何将文件夹中的图片变为背景图_Web中的图像技术全面总结,长文干货!...
  9. ROS 可视化(一): 发布PointCloud2点云数据到Rviz
  10. 部队计算机考试题,2020军队文职计算机知识:计算机考试练习题(1)
  11. 【leetcode】二叉树的深度以及树是否平衡的问题
  12. LINUX下载编译iLBC
  13. Ueditor编辑器任意文件上传漏洞
  14. java商城功能模块图_java网上图书商城(1)User模块
  15. mysql数据库慕课答案_智慧树MySQL数据库设计与应用慕课答案
  16. 人工智能行业每日必读(02·04)
  17. typescript全局安装卸载以及npm相关问题
  18. PHPMyWind支持ppt上传
  19. 苹果cms V10添加修改播放器教程
  20. OpenCV Tutorial: 開運算、閉運算(morphologyEx、MORPH_OPEN、MORPH_CLOSE)

热门文章

  1. 微信小程序 # 轮播图swiper滑动到最后一页进行页面跳转
  2. HDU 5804 Price List (简单题)
  3. 科利转债上市价格预测
  4. 项目经理如何才能控制项目进度
  5. 单细胞测序分析及单细胞转录组
  6. iOS - 颜色选择器
  7. 四川大学计算机考研专业参考书目,四川大学计算机技术(专业学位)研究生考试科目和考研参考书目...
  8. nodejs mysql knex_使用knex创建postgresql表knex迁移
  9. 微信调试、手机QQ调试、Qzone之x5内核inspect调试解决方案
  10. 【Tableau Desktop 企业日常问题23】Tableau 筛选之后如何保持原有排序顺序?