Unity内部打开Web网页——《UniWebView》,unity与网页相互调用并且传参数

1.首先找插件,UniWebView2.9,附上下载链接如下,https://pan.baidu.com/s/1HPvFzKU7WNHSvxHrKtX8zg   提取码:4g2i。

2.导入之后就是这样。

3.参考网上教程:( https://blog.csdn.net/qq_37310110/article/details/79761844)。

4,在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<UniWebView>();

        if (view == null)

        {

            view = go.AddComponent<UniWebView>();

        }

        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;

    }
    
    private static int ConvertPixelToPoint(float num, bool v)

    {

#if UNITY_IOS && !UNITY_EDITOR

        float scale = 0;

        if(v)

        {

            scale = 1f * screenWidth / Screen.width;

        }

        else

        {

            scale = 1f * screenHeight / Screen.height;

        }

        return (int)(num*scale);

#endif

        return (int)num;

    }
   

5.创建一个新脚本OpenURL,挂在到Canvas上。

#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;
    public Text _text;
    
    UniWebView _view;
    private void Awake()
    {
        _url.text = "https://www.baidu.com";
        _enterBtn.onClick.AddListener(OpenUrl);
        _backBtn.onClick.AddListener(CloseUrl);
    }
    public void OpenUrl()
    {
        
        if (_view!=null)
        { 
            _view.CleanCache();
        }
        if (_url.text == null)
        {
            return;
        }
        _view = UniWebViewHelper.CreateUniWebView(gameObject, _url.text, 100,0,0,0);
        _view.Load();
        
        _view.OnLoadComplete += View_OnLoadComplete;
        _view.OnReceivedMessage += _webView_OnMessageReceived;
        _view.OnEvalJavaScriptFinished += _webview_OnEvalJavaScriptFinished;
        /*
        private void RemoveAllListeners() {
        this.OnLoadBegin = null;
        this.OnLoadComplete = null;
        this.OnReceivedMessage = null;
        this.OnReceivedKeyCode = null;
        this.OnEvalJavaScriptFinished = null;
        this.OnWebViewShouldClose = null;
        this.InsetsForScreenOreitation = null;
    }
         */
    }
    private void View_OnLoadComplete(UniWebView webView, bool success, string errorMessage)
    {
        if (success)
        {
            //  显示 加载完成的界面  
            webView.Show();
            _backBtn.gameObject.SetActive(true);
            //unity调用网页的showAlert方法,并传入参数2222
            webView.EvaluatingJavaScript("showAlert('2222')");
        }
        else
        {
            Debug.LogError("Something wrong in webview loading: " + errorMessage);
        }
    }
    public void CloseUrl()
    {
        _view.Hide();
        _view.OnLoadComplete -= View_OnLoadComplete;
        _view.OnReceivedMessage -= _webView_OnMessageReceived;
        _view.OnEvalJavaScriptFinished -= _webview_OnEvalJavaScriptFinished;
        Destroy(_view);
    }
    
    //接收到网页事件消息
    private void _webView_OnMessageReceived(UniWebView webView, UniWebViewMessage message)
    {
        switch (message.path)
        {
            case "close":
                /*var name = message.args["name"];//网页传递过来的参数args[] json
                Debug.Log(name);*/
                Destroy(webView.gameObject);
                webView.CleanCache();
                break;
            default:
                break;
        }
    }
    private void _webview_OnEvalJavaScriptFinished(UniWebView webView, string result)
    {
        if (result.Equals("0"))
        {
           Debug.Log("调用网页的showAlert成功");
        }
        else
        {
            Debug.Log("调用网页的showAlert失败");
        }
    }
}

 

网页端代码。

 

参考连接; https://www.jianshu.com/p/c4f49922b8e9

https://blog.csdn.net/qq_37310110/article/details/80469144

https://blog.csdn.net/qq_37310110/article/details/79761844

https://blog.csdn.net/u010019717/article/details/52890644

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Unity3D是一款强大的跨平台游戏引擎,可以用于开发2D和3D游戏。Unity3D也支持将游戏嵌入到Web网页中,以供用户通过浏览器进行访问和游玩。 首先,将Unity3D游戏嵌入到Web网页中需要使用Unity Web Player插件。Unity Web Player是一款浏览器插件,只需用户安装后,就可以在支持Unity3D网页上运行Unity3D游戏。用户通过浏览器访问Web网页时,就可以实时加载Unity3D游戏,无需下载游戏到本地进行安装。 其次,嵌入Unity3D游戏到Web网页的过程相对简单。开发者需要首先将游戏项目导出为WebGL格式,这样网页上的引用链接将指向基于JavaScript的Unity WebGL构建。通过Unity的构建设置,可以调整游戏的分辨率、加载速度和其他配置,以适应不同的网页环境。然后,将导出的游戏文件(包含HTML,JavaScript和二进制文件)放入Web服务器中的相应文件夹中。最后,将嵌入Unity3D游戏的代码插入到Web网页的HTML文件中,以启动并显示游戏界面。 值得注意的是,随着Web技术的发展,Unity3D宣布将停止支持Unity Web Player插件,并更加推荐使用WebGL来嵌入Unity3D游戏到Web网页中。WebGL是一种基于Web标准的3D图形API,可以在不依赖插件的情况下在现代浏览器中运行。通过使用UnityWebGL构建目标,开发者可以将游戏直接导出为支持WebGL的文件,然后将这些文件部署到Web服务器中,并通过HTML的canvas标签来嵌入到Web网页中,实现无需插件的网页游戏体验。 综上所述,Unity3D支持嵌入到Web网页中,用户只需安装Unity Web Player插件或使用现代浏览器支持的WebGL技术,就可以通过浏览器访问并玩游戏。但需要注意,由于技术的发展,建议开发者使用WebGL来嵌入Unity3D游戏到Web网页中,以保持与未来发展的兼容性。 ### 回答2: Unity3D是一款强大的跨平台游戏开发引擎,可以用于创建各种类型的游戏和交互应用程序。在Unity3D中,我们可以将开发的游戏或应用程序嵌入到网页中,为用户提供在线体验的机会。 嵌入Unity3D游戏或应用程序到网页中的过程相对简单。首先,我们需要将Unity3D项目导出为网页可用的格式,例如WebGL。然后,我们可以使用HTML和JavaScript等网页技术,将导出的游戏或应用程序嵌入到网页中的特定位置。 在嵌入过程中,我们可以通过调整参来自定义游戏或应用程序在网页中的表现形式。例如,我们可以设置窗口的大小、背景和边框的样式等。还可以通过调整Unity3D的摄像机设置,来改变游戏或应用程序在网页中的视觉效果。 嵌入Unity3D游戏或应用程序到网页中,可以为用户提供在线直接玩的体验。无需下载和安装游戏或应用程序,只需打开网页,即可开始游戏或使用应用程序。这对于开发者来说,可以减少用户的操作步骤,提高用户的参与度和体验感。同时,用户也可以在不同平台和设备上使用游戏或应用程序,无需担心兼容性问题。 总之,Unity3D的嵌入Web网页功能为开发者提供了一种方便的方式,将游戏或应用程序直接嵌入到网页中,为用户提供在线体验的机会。这样的开发方式可以节省用户的时间和精力,提高用户的满意度和参与度。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值