欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
https://download.csdn.net/download/qq_37310110/11004869
深入了解请参考 Unity内部打开Web网页——《UniWebView》插件的使用二
在官方提供的sdk里 最新的3.0版本跟之前的旧版本2.8差距其实还是很大的,但是功能上只加不减,且调用起来更加方便。2.8版本的sdk插件里面有一个完整的demo包括各种调用,但是3.0版本的就没有相关的demo所以我们只能参考2.8的demo,我这里把官方的版本迁移说明文档地址 给大家 http://docs.uniwebview.com/guide/migration-guide.html 一点要看研究一下。本篇基于2.8版本
因为项目上的需求,要在应用内打开指定的网络地址。就想着先查询学习一下,发现很多人都是推荐使用UniWebView这个插件,这个插件在unity商店里是收费的,我这里给大家一个免费的地址链接。
这两个版本的资源链接都会发给的大家。https://download.csdn.net/download/qq_37310110/10318627
最后也会把demo源码发给大家 https://download.csdn.net/download/qq_37310110/10318633
插件导入后是三个文件夹,有兴趣的可以看一下他们的源码了解一下。这里我们以实现功能节省时间为主.把prefab里面的预制体直接拖拽到Hierarchy面板
点击UniWebViewObject可以看到如下几个设置选项
1.打开的网页界面占比
2.目标网站
3.是否在开始就加载,一般为false
4.是否加载成功就默认显示,我一般也是false,这个其实无所谓,反正在代码里会调用显示。
5.界面是否有ToolBar效果 我直接忽略
因为在实际开发中,我们不可能只需要一个网站,所以我在UniWebViewHelper类里加了一个方法
public static UniWebView CreateUniWebView(GameObject go, string url, float top, float left, float bottom, float right)
{
if (go == null || !go.activeSelf)
{
return null;
}
var view = go.GetComponent();
if (view == null)
{
view = go.AddComponent();
}
view.insets = new UniWebViewEdgeInsets(UniWebViewHelper.ConvertPixelToPoint(top, false), UniWebViewHelper.ConvertPixelToPoint(left, true), UniWebViewHelper.ConvertPixelToPoint(bottom, false), UniWebViewHelper.ConvertPixelToPoint(right, true));
view.SetShowSpinnerWhenLoading(true);
view.immersiveMode = false;
view.url = url;
return view;
}
目的在于随时用随时Create。而且网页显示界面的初始化也可以写在里面包括一些界面尺寸,显示模式,目标网址
新建OpenUrl类
#region 模块信息
// **********************************************************************
// Copyright (C) 2018 Blazors
// Please contact me if you have any questions
// File Name: OpenURL
// Author: romantic123fly
// WeChat||QQ: at853394528 || 853394528
// **********************************************************************
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class OpenURL : MonoBehaviour {
public InputField _url;
public Button _enterBtn;
public Button _backBtn;
UniWebView _view;
private void Awake()
{
_enterBtn.onClick.AddListener(OpenUrl);
_backBtn.onClick.AddListener(CloseUrl);
_backBtn.gameObject.SetActive(false);
}
public void OpenUrl()
{
if (_view!=null)
{
_view.CleanCache();
}
if (_url.text == null)
{
return;
}
_view = UniWebViewHelper.CreateUniWebView(gameObject, "http://"+_url.text, 100,0,50,0);
_view.OnLoadComplete += View_OnLoadComplete;
_view.Load();
}
private void View_OnLoadComplete(UniWebView webView, bool success, string errorMessage)
{
if (success)
{
// 显示 加载完成的界面
webView.Show();
_backBtn.gameObject.SetActive(true);
}
else
{
// 输出 错误码
Debug.LogError("Something wrong in webview loading: " + errorMessage);
}
}
public void CloseUrl()
{
_view.Hide();
_view.OnLoadComplete -= View_OnLoadComplete;
Destroy(_view);
}
}
两个按钮一个是确定进入目标网站,另一个是退出当前网站并删除。
直接上图直观明了。
基于安卓打包测试。因为项目赶得紧没有时间去详细的了解更深层次的功能。希望大家有时间就去深入了解一下互相交流探讨
此demo源码地址 https://download.csdn.net/download/qq_37310110/10318633
深入了解请参考 Unity内部打开Web网页——《UniWebView》插件的使用 二
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群