unity学习笔记-uniwebview3的使用以及一些补充(视频问题已解决)

uniwebview的使用

首先需要下载这个插件
unity官方的商店里就有这个可以直接下载,不过不是免费的(我是白嫖的)

使用

2.9的版本里面是有demo的,我用的是3.1,已经没有demo了
网上的教程就是直接在场景中创建一个gameobject
然后给他添加uniwebview的脚本
然后给他添加url
这里注意,需要给这个网页显示一个image,网页才能显示出来
3.1的版本里有在这里插入图片描述
红框里的组件可以选择,你可以把image拖进这个地方,然后最简单的在unity里内嵌网页的demo就出来了
这里需要注意一个地方
由于是在移动端才能显示,所以在打包之后才能显示出来
并且还需要在
在这里插入图片描述
这个文件里面,添加下面的这行代码,否则会有err cleartext not permitted之类的异常,导致无法打开和显示网站

    android:usesCleartextTraffic="true"

在这里插入图片描述
也就是上面的这个位置
不过还是有一些问题需要注意
第一:打开h5游戏时会出现白屏的问题,里面的内容是正常运行的,如音频等,就是画面没有
第二,目前还不太清楚怎么自定义界面,以及控制打开的方法

单纯就是先记录一下,可能需要大神指导才行,网上对这个插件的教程不多,而且我感觉这个更多的是由于jar包的原因,如果是这个的话调试起来就相当麻烦了。因为看网上对webview的说明都是在安卓环境下进行修改的,但是我这里也不能获得uniwebview的源代码,还得重新打包之类的,希望不是这个原因吧

隔天更新:
需要注意
如果只是单纯的从unity打包成安卓apk
就会出现上面视频播放有声音没图像的bug,以及h5游戏没有画面的情况
但是

uniwebview视频有声音没图像的其中一个解决办法

如果把这个unity给export,然后放在as里运行的话,这个问题就没了
估计就是上面说的这个问题,打包给as 的时候,可能as里自带的什么设置让unity的webview能在as的环境下运行h5界面
但是还是那个问题,程序运行不报错,不清楚到底是哪里的设置没有弄好,这是真的阴间
unity打包给as,让as进行apk打包的流程可参考小弟之前写的帖子
unity和as交互2019版

以上,由于本身项目就是需要放在as里跑的,所以这个问题用这个方法好像暂时能解决,还有其他的内容没有完成,这个问题只能先留着了,至少功能是实现了(dogde)
2021.6.24更新

uniwebview视频有声音没图像的其中一个解决办法补充

在导入as再打包成apk的时候如果还是有这个问题的话,可以试试在as的app项目里的Androidmestifes.xml里添加下面的这个代码,也就是上面的那个

android:usesCleartextTraffic=“true”

uniwebview补充

上面的这个问题不是因为没有加配置的关系
是因为在Android里打开网页的时候,会有网页的缓存,所以第二次打开的时候会和之前的缓存有所冲突,需要清除掉
由于uniweview的生命周期目前还不是太了解,在摸索了一下午后,我的做法是不用uniwebview写好的prefab,而是在需要打开页面的时候动态的在场景中生成一个uniwebview,我用的是uniwebview3的版本,其他大佬用的好像都是比较久的,所以他们重写uniwebview里的一些方法的时候我是用不了的,不同的版本好像有的变量和方法都变了
我是参考了其中一个大佬的方法,自己再修改了一下、
先创建一个url数组,方便调用
在这里插入图片描述
新建一个gameobject,重新命名。然后添加uniwebview组件
对这个组件进行一些参数的设置
load里添加你要访问的网页名
show显示网页
frame对显示网页的布局进行设置,这里设置的是全屏(领导の需求)

		GameObject webview = new GameObject("Uniwebview");
        webview.AddComponent<UniWebView>();
        webview.GetComponent<UniWebView>().Load(urls[PlayerMoveController.sceneIndex-1] +PlayerInfo.Instance.playInfo.data.token);
        webview.GetComponent<UniWebView>().Show(true);
        webview.GetComponent<UniWebView>().Frame = new Rect(0,0,Screen.width,Screen.height);

然后运行就可以跑通了
由于不太了解这个插件的生命周期,我只是猜测的,uniwebview在通过物理键(手机自带的home和返回键)退出内嵌网页的时候,会顺便把自己给销毁了,因为我试过重新调用写好的uniwebview对象的时候会直接报错。如果是这样的话也挺好,省的再去写销毁的方法
上面的写法也不用在意网页缓存的问题
到此基本解决~
剩下的就是设计网页的人的事情了,除非还要再对网页里的内容进行新的操作~

2021.6.29更新

解决视频播放问题

最简单粗暴的方法就是在网上购买最新的uniwebview(好像已经到4了)插件,导入就可以解决视频播放只有声音没有图像的问题
提醒
如果你导如插件后,在真机上实际运行的时候出现了在这里插入图片描述
的问题,不要慌
虽然我一开始也慌了
因为最新版本的uniwebview里的androidmestfest之类的配置信息文件已经用cs进行处理了,所以他的位置不再放在plugins的android里了
那么怎么处理呢,经过我的一番推敲
发现在editor里有一个settings的配置文件信息
点他你会发现有一些默认的设置可以在这里直接进行修改
其中就有usescleartraffic的选项,把他打上勾就可以了
我试过在写androidmestfest这个文件的cs脚本里强行写上true,通过debug测试发现他还是会变成false,这里面还包括了一个changed的bool值,初步推测是为了防止使用者对这个插件代码进行了一些不小心的修改导致程序无法正常运行,所以设置了这个变量来控制,加强代码的稳定性
从这个新版本的插件上,我体会到的就是程序员无穷无尽的强大
如果不是这个插件,我都忘了配置信息文件是可以通过脚本来书写的

2021.9.3更新

更新一个小bug
如果在使用的过程中遇到明明访问到的是正确的地址,但是网页打开的偏偏是其他乱七八糟的地址的bug
这个问题解决很简单,但是试错的过程还是挺耗精力的,因为确实不知道是什么原因引起的,在经过多方查询和自己的实验下发现了问题所在
就是需要在访问完网页之后清除一下缓存
这些个缓存过多的时候会引起很多的问题,就比如这个网页加载的问题
这个问题他还很奇怪,有的网页是可以打开的, 有的是不行的.当然可能跟我测试的次数太少有关,反正不管是不是这个缓存的问题,我们按照常理来说都是需要清理缓存的,这样对性能的消耗也是很好的优化和习惯,这里记录一下
至于清理缓存的方法其实这个uniwebview插件自带了这个方法,在获得这个组件之后写上onshouldClose的委托就可以了~具体的写法如下

webview.OnShouldClose += (view) => {
    webview.ClearCache();
    return true;
}

以上是纯手打的,可能会有点问题,不过大致的思路就是这样的.就可以解决网址是正确的但是打开的是其他页面的bug了
加油!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值