阅读:5606回复:0
三维场景使用网页作为UI方法UI,User Interface,用户介面。在三维程序开发中将非三维模型部分的按钮、图表等特称为UI。在三维程序中使用网页作为UI分为两张情况:网页嵌入三维程序中、三维程序嵌入网页中。 一、网页嵌入三维场景 这种情况一般是三维程序最终发布为exe可执行程序,在三维程序中嵌入内置浏览器工具以解析网页内容。基于Embedded Browser(V2.1.0)插件,使用Chromium 64.0.3282.119 / CEF 3.3282.1741.gcd94615为浏览器内核。Embedded Browser可以把网页将网页渲染为纹理并与其完全交互。支持编写HTML,CSS和JavaScript直接呈现网页;支持从Unity调用JavaScript;支持从JavaScript调用Unity;支持网页控制:网址加载,后退,重新加载,调整大小等浏览器功能;支持透明或不透明的页面背景切换;包含Mipmap仿真着色器可以更快的更新纹理,无闪烁。 数据交互示例: 三维场景到网页-三维场景端:在Canvas下创建物体,挂载RawImage组件和Browser.cs脚本。物体命名为BrowserTransfrom。代码示例(c#): public void ChangeDocNum(string num) { //网页js包含changeValue(num)方法函数 BrowserTransfrom.GetComponent<Browser>().EvalJS("changeValue(" + num + ")"); } 三维场景到网页-网页端(js): function changeValue(){ //触发事件 } 网页到三维场景-三维场景端:在内置浏览器中注册一个方法并添加触发事件,网页上执行该功能函数时便可以同时触发三维场景中的注册事件了。代码示例(c#): //网页js包含LoadDataInScene (json)方法函数 BrowserTransform.Component<Browser>().RegisterFunction("LoadDataInScene", args => { string Jsondata = args[0]; Debug.Log("Get Json Frm html: " + Jsondata); } 网页到三维场景-网页端:在网页JS上预写一个可传入参数的功能函数即可。代码示例(js): function LoadDataInScene(arg){} ps:发布不可使用中文程序名称。 二、三维场景嵌入网页中 三维场景发布为WebGL后,可以通过网页加载三维内容。嵌入三维场景可与其外部网页进行数据交互。 数据交互示例: 三维场景中可直接调用外部网页js代码(c#): Application.ExternalCall(“JSCode”); 外部网页也可调用场景中的功能方法(js): gameInstance.SendMessage("ObjectName", "FunctionName", Arg); ObjectName是三维场景中挂载脚本的物体名称 FunctionName是三维场景中物体包含的公用属性方法; Arg是方法参数。 |
|