using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

//********************************************************************

// 文件名: ShowH5Controller

// 描述: 显示H5界面

// 作者:

// 创建时间: #CREATIONDATE#

//********************************************************************

public class ShowH5Controller : MonoBehaviour

{

/// /// H5的数据

///

public class H5Data

{

public string h5_url;

public UniWebView.ReceivedMessageDelegate OnReceivedMessage;

public UniWebView.WebViewShouldCloseDelegate OnWebViewShouldClose;

}

public UniWebView uniWebView

{

get

{

if (_uniWebView == null)

{

GameObject go = new GameObject("UniWebView");

_uniWebView = go.AddComponent();

}

return _uniWebView;

}

set

{

_uniWebView = value;

}

}

private UniWebView _uniWebView;

/// /// loading物体

///

public GameObject loadingGo;

/// /// h5的返回按键是否使用

///

[HideInInspector]

public bool backButtonEnable = false;

public static ShowH5Controller Instance;

/// /// 异常的退出回调

///

public Action errorCallBack;

/// /// 是否显示H5界面

///

private bool isShowH5;

/// /// 数据

///

private H5Data data;

private void Awake()

{

Instance = this;

}

/// /// 显示H5界面

///

///

/// url后面跟的参数

public void ShowH5(string h5_url, Dictionaryurl_param, UniWebView.ReceivedMessageDelegate OnReceivedMessage, UniWebView.WebViewShouldCloseDelegate OnWebViewShouldClose)

{

if (string.IsNullOrEmpty(h5_url))

{

//Debug.Log("显示h5的界面url为空");

LogTool.AddLogString("显示h5的界面url为空");

if (errorCallBack != null) errorCallBack();

return;

}

string param = "?";

foreach (var item in url_param)

{

if (string.IsNullOrEmpty(item.Key) || string.IsNullOrEmpty(item.Value)) continue;

param += item.Key + "=" + item.Value + "&";

}

h5_url += param.TrimEnd('&');

h5_url = h5_url.Replace(" ", "");

ShowH5(h5_url, OnReceivedMessage, OnWebViewShouldClose);

}

/// /// 显示H5界面

///

///

public void ShowH5(string h5_url, UniWebView.ReceivedMessageDelegate OnReceivedMessage, UniWebView.WebViewShouldCloseDelegate OnWebViewShouldClose)

{

if (string.IsNullOrEmpty(h5_url))

{

//Debug.Log("显示h5的界面url为空");

LogTool.AddLogString("显示h5的界面url为空");

if (errorCallBack != null) errorCallBack();

return;

}

isShowH5 = true;

data = new H5Data() { h5_url = h5_url, OnReceivedMessage = OnReceivedMessage, OnWebViewShouldClose = OnWebViewShouldClose };

uniWebView.OnLoadComplete += OnLoadComplete;

loadingGo.SetActive(true);

uniWebView.Load(h5_url);

uniWebView.backButtonEnable = backButtonEnable;

uniWebView.SetShowSpinnerWhenLoading(false);

if (OnReceivedMessage != null)

uniWebView.OnReceivedMessage += OnReceivedMessage;

if (OnWebViewShouldClose != null)

uniWebView.OnWebViewShouldClose += OnWebViewShouldClose;

LogTool.AddLogString("h5的界面url:" + h5_url);

}

/// /// 加载页面

///

///

///

///

private void OnLoadComplete(UniWebView webView, bool success, string errorMessage)

{

if(!success)

{

if (errorCallBack != null) errorCallBack();

Debug.Log("加载页面失败!!!!!!!" + errorMessage);

}

else

{

loadingGo.SetActive(false);

uniWebView.Show();

}

}

/// /// 关闭H5界面

///

public void CloseH5()

{

ClearUniWebView();

data = null;

isShowH5 = false;

//Debug.Log("关闭h5的界面url!!");

}

/// /// 清空UniWebView

///

private void ClearUniWebView()

{

backButtonEnable = false;

//uniWebView.CleanCache();

uniWebView.Hide();

Destroy(uniWebView);

Destroy(uniWebView.gameObject);

uniWebView = null;

}

private void OnApplicationPause(bool pause)

{

if(pause)

{

if (isShowH5 && data != null)

{

ClearUniWebView();

}

}

else

{

if(isShowH5 && data != null)

{

ShowH5(data.h5_url, data.OnReceivedMessage, data.OnWebViewShouldClose);

}

}

}

}

1.讲解网站链接:https://blog.csdn.net/u010019717/article/details/52890644

2.官网链接:http://uniwebview.onevcat.com/

html5 调用unity,Unity调用UniWebView打开H5界面脚本相关推荐

  1. Unity调用UniWebView打开H5界面脚本

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; //***** ...

  2. Unity编辑器扩展——自动生成UI界面脚本

    一:前言 对于面板赋值或Find绑定UI组件,我们可以使用一种工具化的方式去自动生成代码并绑定对象,增加效率 分为logic和view,view层是UI界面上的组件,每次都会自动生成并覆盖,logic ...

  3. Unity中调用手机中的粘贴功能

    最近有个小需求,就是点击一个按钮,然后复制整个文本中的内容..然后根据网上大神们的教程找到了思路.. https://blog.csdn.net/u011416077/article/details/ ...

  4. unity 实现调用Windows窗口/对话框交互

    Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...

  5. Unity代码调用网络摄像头WebCamTexture

    Unity代码调用网络摄像头WebCamTexture 初始代码 后续功能&代码更新 注意事项 初始代码 编辑器模式或Android环境和实机测试都没有问题. using System.Col ...

  6. Unity如何调用摄像头并显示在窗口内

    Unity如何调用摄像头并显示在窗口内 序言 目标 unity中的实现 序言 在学习Unity开发AR过程中,发现无论是Vuforia还是Unity中的ARkit或者ARcore,均是建立一个ARca ...

  7. 移动端h5唤起键盘_移动端H5界面打开后,如何自动调用软键盘

    test(){ // let aa = this.$refs.input1.blur(); // this.$nextTick((x)=>{ //正确写法 // // this.$refs.in ...

  8. android安装自动打开网页,Android调用系统自带浏览器打开网页的实现方法

    Android调用系统自带浏览器打开网页的实现方法 在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接.只需要传入一个uri,可以是链接地址. 启动android默认浏览器 在A ...

  9. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

  10. 怎样用调用资源管理器explore.exe打开指定的文件夹

    怎样用调用资源管理器explore.exe打开指定的文件夹 VCL组件开发及应用 http://www.delphi2007.net/DelphiVCL/html/delphi_20061225173 ...

最新文章

  1. java安全地生成128,256,512bit随机数
  2. 【VMCloud云平台】SCAP(四)连接公有云(一)
  3. 放弃OpenStack?恐怕还不到时候
  4. 数据库之字段数据类型
  5. html css右下角三角形,html – 框内的CSS中的三角形
  6. web访问 FastDFS 方法思路
  7. 2019最全Python入门学习路线,绝对是最全
  8. centos 卸载docker_Spring Boot学习05_Docker卸载与安装
  9. Tomcat开发Web项目基本结构
  10. linux在文件或文件夹中查找字符串
  11. 查看Chome浏览器中已保存的密码
  12. @FeignClient注解 中属性 contextId使用
  13. /etc/fstab文件分析(第二版)
  14. web 自动化测试 selenium基础到应用(目录)
  15. linux上ftp和lftp冲突,Linux FTP客户端 Lftp 使用方法,该如何解决
  16. vijos P1001 谁拿了最多奖学金
  17. 课程设计之第二次冲刺----第一天
  18. bde连接mysql设置,delphi通过BDE方式连接数据库以及程序Demo
  19. CAML语法- Query写法
  20. 诺禾-蛋白表达纯化之通关技巧

热门文章

  1. vue加载中图片和加载失败图片的占位图
  2. 素数c语言,C语言素数怎么表示
  3. 华为太极magisk安装教程_Magisk字体包制作、字体包导入及导入失败等详细教程
  4. 为什么计算机连接u盘不显示内存不足,U盘明明有空间却提醒空间不足怎么解决...
  5. 三星魔术师助手v5.3.1_Cinemachine 2.6为您带来精度,改进的工作流程和一点点魔术
  6. bootdo项目war包部署流程
  7. python几种数据结构_Python中的4种数据结构
  8. CSDN博文写作规范文档
  9. ac1900 linksys 恢复_把变砖的Linksys-AC1900路由器救活
  10. 计算机cf是什么比赛,端游cf什么是信用星级