UniWebView 3 使用心得

基于 UniWebView 3

官网教程 点击打开链接

最新版 插件下载链接

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WebViewController : MonoBehaviour
{


    private UniWebView uniWebView;
    public RectTransform viewImage;

    public UniWebView GetUniWebView
    {
        get
        {
            if (uniWebView == null)
            {
                uniWebView = GameObject.FindObjectOfType();
                if (uniWebView == null)
                {
                    GameObject webViewGameObject = GameObject.Find("UniWebView");
                    if (webViewGameObject == null)
                        webViewGameObject = new GameObject("UniWebView");
                    uniWebView = webViewGameObject.AddComponent();
                    uniWebView.ReferenceRectTransform = viewImage;


                }
                uniWebView.OnMessageReceived += OnMessageReceived;
                uniWebView.OnPageStarted += OnPageStarted;
                uniWebView.OnPageFinished += OnPageFinished;
                uniWebView.OnKeyCodeReceived += OnKeyCodeReceived;
                uniWebView.OnPageErrorReceived += OnPageErrorReceived;

                uniWebView.OnShouldClose += OnShouldClose;

                uniWebView.SetBackButtonEnabled(false);// 回退钮  物理按键

            }
            return uniWebView;
        }
    }


    private void OnPageErrorReceived(UniWebView webView, int errorCode, string errorMessage)
    {
        Debug.Log("OnPageErrorReceived :" + string.Format("errorCode:{0},errorMessage{1}", errorCode, errorMessage));
    }

    private void OnKeyCodeReceived(UniWebView webView, int keyCode)
    {
        Debug.Log("OnKeyCodeReceived keycode:" + keyCode);
    }

    private void OnPageFinished(UniWebView webView, int statusCode, string url)
    {
        Debug.Log("OnPageFinished statusCode:" + string.Format("statusCode:{0},url{1}", statusCode, url));
    }

    private void OnPageStarted(UniWebView webView, string url)
    {

        Debug.Log("OnPageStarted " + url);
    }

    ///JS 调用 untiy3D
    private void OnMessageReceived(UniWebView webView, UniWebViewMessage message)
    {
        Debug.Log("OnMessageReceived :" + message.RawMessage);


        //		if (message.Path.Equals("game-over")) {
        //			var score = message.Args["score"];
        //			Debug.Log("Your final score is: " + score);
        //
        //			// Restart the game after 3 second
        //			Invoke("OnReLoaded", 3.0f);
        //		}

        if (message.Path.Equals("game"))
        {
            var score = message.Args["score"];
            var name = message.Args["name"];
            Debug.Log("Your final score is: " + score + "name :" + name);

            // Restart the game after 3 second
            //Invoke("OnReLoaded", 3.0f);




            if (GetUniWebView.isActiveAndEnabled)
            {
                string content = string.Format("openParamOne({0});", int.Parse(score) * 2 + int.Parse(name) * 1);
                GetUniWebView.EvaluateJavaScript(content, (payload) => {
                    if (payload.resultCode.Equals("0"))
                    {
                        Debug.Log("Game Started!=========>");
                    }
                    else
                    {
                        Debug.Log("Something goes wrong: " + payload.data);
                    }
                });
            }
        }


    }

    private bool OnShouldClose(UniWebView webView)
    {
        webView.CleanCache();
        webView = null;
        return true;
    }


    private string url = "http://www.0000.com/TWeb.aspx";

    private void OnGUI()
    {
        url = GUILayout.TextField(url, GUILayout.Width(250), GUILayout.Height(80));
        if (GUILayout.Button("Load", GUILayout.Height(80)))
        {
            OnLoaded();
        }
        if (GUILayout.Button("ReLoad", GUILayout.Height(80)))
        {
            OnReLoaded();
        }

        if (GUILayout.Button("Close", GUILayout.Height(80)))
        {
            OnClose();
        }

        if (GUILayout.Button("Call JS", GUILayout.Height(80)))
        {
            OnCallJavaScript();
        }

        if (GUILayout.Button("GoBack", GUILayout.Height(80)))
        {
            if (GetUniWebView.CanGoBack)
            {
                GetUniWebView.GoBack();
            } 
          
        }
        if (GUILayout.Button("GoForward", GUILayout.Height(80)))
        {
            if (GetUniWebView.CanGoForward)
            {
                GetUniWebView.GoForward();
            }

        }
    }

    private void OnLoaded()
    {

        GetUniWebView.Load(url);
        GetUniWebView.Show();
    }

    private void OnReLoaded()
    {
        if (GetUniWebView.isActiveAndEnabled)
        {
            GetUniWebView.Reload();
        }
    }


    private void OnClose()
    {
        GetUniWebView.Hide();
        Destroy(GetUniWebView.gameObject);
    }


    ///调用 JS 代码
    private void OnCallJavaScript()
    {

        if (GetUniWebView.isActiveAndEnabled)
        {
            GetUniWebView.EvaluateJavaScript("openParam();", (payload) => {
                if (payload.resultCode.Equals("0"))
                {
                    Debug.Log("Game Started!");
                }
                else
                {
                    Debug.Log("Something goes wrong: " + payload.data);
                }
            });
        }
        //			if (GetUniWebView.isActiveAndEnabled) 
        //			{
        //				string content = string.Format ("openParam({0});", int.Parse(score) * 2 + int.Parse(name) * 1);
        //				GetUniWebView.EvaluateJavaScript(content, (payload)=>{
        //					if (payload.resultCode.Equals("0")) {
        //						Debug.Log("Game Started!");
        //					} else {
        //						Debug.Log("Something goes wrong: " + payload.data);
        //					}
        //				});
        //			}

    }



}

插件下载链接

 

 

关于 JS 调用 Unity3D  详细:https://docs.uniwebview.com/guide/working-with-code.html

 

UniWebView 3 使用心得_第1张图片

你可能感兴趣的:(Unity)