赞
踩
下载后会得到一个后缀为.unitypackage的文件,这个就是unity的包。现在我们只需要点开unity,然后右键Assets,选择import package即可打开文件,在文件中选择这个包就可以导入了。
等待稍后加载文件,点击import即可成功导入。
这个时候我们就可以开始初步使用了,这里以导入百度搜索为基础,介绍使用流程。
在新建的场景中的canvas里面建立一个raw image控件。
在该控件中点击Add Component添加插件,输入browser,可以看到,系统已经自动找到了我们导入的插件。
选择GUI Beowser UI后,系统会自动添加两个compoent
其中Browser里面的URl就是我们放网页地址的地方,填入百度搜索的地址。运行unity,可以看到百度已经加载出来了,输入搜索也是可以的。
这里如果不能点击的同学,可以再添加一个compoents
GUI Browser是即将被淘汰的组件,建议使用pointer UI GUI,但是实际上这个插件再2.0版本就这么说,到3.1了依旧没有改。。。
如果是要使用网页替代unity UI 那么插入本地网页必不可少,请看详细操作方法:
在unity跟目录下建立BrowserAssets文件夹。注意,名字必须完全一致,如果不一致会导致插件找不到文件
将需要使用的html放入其中即可
回到unity中,将刚才在输入的百度url改为,localGame://mychart.html
点击运行后可以发现我们自定义的html文件就显示了出来。
在这个插件里面提供了html和unity互相调用传参的方法。基本操作如下:
html调用unity的方法,只需要js调用一个方法,然后在c#里面监听同名函数即可。具体代码如下
html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts</title> <!-- 引入 echarts.js --> <style type="text/css"> * { padding: 0; margin: 0; box-sizing: border-box; } .title { margin: 0; text-align: center; color: aqua; background-color: #162256; padding: 10px 0; height: 60px; } .main { display: flex; /* height: 600px; */ height: calc(100vh - 60px); } .main>div { /* background-color: ; */ /* opacity: .3; */ } .left, .right { width: 15%; background-color: #00f798; } .middle { width: 60%; margin: 0 auto; /* background-color: antiquewhite; */ } </style> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="index"> <h1 class="title">数字孪生世界</h1> <div class="main"> <div class="left"> <button type="button" onclick="test()">15栋教学楼</button> </div> <div class="middle"> <div id="main" style="width: 400px;height:300px;"></div> </div> <div class="right"></div> </div> </div> <script src="echarts.min.js"></script> <script type="text/javascript"> function test() { var a = 21 // test1("15"); testAgain("传过来的参数") return a } function testAgain() { } function checkUi(item) { console.log("js接受到参数",item); } </script> </body> </html>
在我们的raw Image组件上挂载一个脚本用来监听js发过来的函数操作。代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using ZenFulcrum.EmbeddedBrowser; namespace Mannager { public class test : MonoBehaviour { Browser browser; public UiMannager uiMannager; void Start() { this.InitData(); //uiMannager = UiMannager.GetInstance(); } private void Awake() { //获取插件Browser组件(Unity方使用插件基础一步) browser = gameObject.GetComponent<Browser>(); } // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.H)) { browser.CallFunction("checkUi", "lampPanel").Done(); //uiMannager.CallFunction("lampPanel"); } } public void InitData() { browser.RegisterFunction("testAgain", (JSONNode jk) => { Debug.Log(jk[0].Value); }); } } }
获取到browser组件后,调用其api RegisterFunction监听 testAgain函数,注册回调,jk[0].value对应的是第一个参数,点击后unity打印出了该参数,成功完成html调用unity.
同上代码,在update生命周期里面,监听的h按键的点击,调用CallFunction方法,向html同名方法传参,按下键盘h键,可以看到js打印输出。
使用vue开发的网页打包后和正常html没有太大的区别,唯一需要注意的是,交互的时候,js需要暴露在全局的函数才会被找到(我理解的是这样,没有验证过),所以需要使用vue的话,就要在mounted生命周期里面把函数设置为window的属性,比如这样。
其他的流程和上面并没有什么区别,更细节的东西我没有用到就没有研究过,大家可以自行学习。
以上就是我最近几天的使用总结,我也是刚使用unity开发,还有很多的问题,本文因为最近查资料发现大家都写的不完整,遇到了许多坑,总结一下也帮助一下后来者。文章如果有什么技术上的问题和纰漏,欢迎指正。我也还有许多问题没有解决,比如上面说到了切换页面后页面高度缩小的问题,或者生产环境下打开调试的操作,有知道的同学也欢迎指教,感激不尽。
原文链接:https://blog.csdn.net/sc909090/article/details/117561395
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。