Unity5.3 使用Awesomium插件内嵌网页

来源:互联网 发布:杭州趣得网络 编辑:程序博客网 时间:2024/05/21 17:44

使用Awesomium插件

爬坑指南
1.使用的为awesomium_unity1.7.4.2win_full插件;
2.此插件最大不爽之处在于非要发布后才能看到网页,谨记;
3.主要写脚本控制WebUIComponent即可;
4.拖预制体的时候会有莫名奇妙的错误,请自行体会;
插件导入后,新建一个空物体,这里写图片描述
添加组件后
插件主要部分
好了,离成功不远了,首先是Common下的Source就是要显示的网址。
看见组件中的Rendering下的Visible没?现在没勾,这个要勾上显示用的。
如果只是显示的话,现在不要任何脚本,发布一个PC端的,运行后就能看到网页了。
下面介绍WebUIComponent的属性
Width,Height 宽和高;
Target 渲染目标,1、None 2、GUI用OnGUI 3、Render 用网格渲染器(要把WebUIComponent添加到Plane或Quad等3D物体上);
Achor 锚点;
IsTransparent 是否有透明通道;
FilterMode 渲染模式
Visible 可见


下面说说代码吧,直接上干货
首先是继承WebUIScript,重写了方法(这里只是简单重写了主要的)

using UnityEngine;using System.Collections;using UnityEngine.UI;using Awesomium.Core;using Awesomium.Unity;using Awesomium.Core.Data;using UnityEngine.EventSystems;public class WebRoomInfoHandler : WebUIScript{    Ray ray;    RaycastHit hit;    private WebSession session;    #region//重写    protected override void Awake()    {        if (Application.isEditor)            return;        if (!webUI)            return;        // Get or create an in-memory WebSession.        if (session == null)        {            session = WebCore.CreateWebSession(new WebPreferences() { SmoothScrolling = true });            UnityEngine.Debug.Log("Created In-Memory Session");        }        if (session.GetDataSource("media") == null)        {            // Create and add a ResourceDataSource. This will be used to load assets            // from the resources assembly (AwesomiumSampleResources) available with this sample.            ResourceDataSource dataSource = new ResourceDataSource(                ResourceType.Embedded,                typeof(AwesomiumSampleResources.Loader).Assembly);            session.AddDataSource("media", dataSource);            UnityEngine.Debug.Log("Added DataSource");        }        // Assign the WebSession to the WebUIComponent.        webUI.WebSession = session;    }    // Use this for initialization    protected override void Start()    {        if (Application.isEditor)            return;        // Check if there's a WebUIComponent available        // in this GameObject.        if (!webUI)            return;        // Set a handler for the DocumentReady event.        webUI.DocumentReady += OnDocumentReady;    }    protected override void OnGUI()    {        if (Input.GetMouseButtonDown(0))        {            OnClickRoom();        }    }    #endregion    #region//事件    private void OnDocumentReady(object sender, UrlEventArgs e)    {        JSObject webUIManager = webUI.CreateGlobalJavascriptObject("webUIManager");        if (webUIManager == null)            return;        webUIManager.Bind("closeWebUI", false, CloseWebUIHandler);//    }    #endregion

下面才是控制的重点;和上面在一个脚本哦。

#region//方法    void OnClickRoom()    {        ray = Camera.main.ScreenPointToRay(Input.mousePosition);        if (Physics.Raycast(ray, out hit, 100f))        {            if (hit.collider.name.Equals("Cube"))            {                Debug.Log("点击房间");                BtnOnClick();            }        }    }    void CloseWebUIHandler(object sender, JavascriptMethodEventArgs e)    {        webUI.Visible = false;    }    public void BtnOnClick()    {        webUI.Source = "https://www.baidu.com".ToUri();        webUI.Visible = true;    }    #endregion

在场景中新建一个Cube,这样点击就会显示网页了,如果你想关闭这个网页,不好意思自己慢慢研究吧。如过你会写网页,注意一下webUIManager,在网页里写上closeWebUI方法,相信你会实现与unity交互的。
效果图如下这里写图片描述

错误之处欢迎之处,哈哈!Demo下载地址:
链接:http://pan.baidu.com/s/1i4U07kh 密码:70wl

0 0
原创粉丝点击