腾讯云联络中心SDK:云联络中心 Web-SDK 开发指南-文档中心-腾讯云 (tencent.com)
查看README.md,根据说明设置server下的dev.js里的相关参数。
然后打开电脑终端,cd到项目的路径:
安装依赖
运行
复制http://127.0.0.1:5173/在浏览器里输入,这时候会显示如下画面:
输入电话号码,点击拨打就会把电话打出去。
新建一个Unity工程,在Assets/Plugins/WebGl下创建一个后缀为jslib的文件,记事本打开编写脚本如下:
mergeInto(LibraryManager.library, {
ReportReady: function () {
window.ReportReady()
},
TellPhone:function(typeName, phone){
SendPhone(UTF8ToString(typeName), UTF8ToString(phone))
}
});
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class UIPanel : MonoBehaviour
{
[DllImport("__Internal")]
private static extern string ReportReady();
[DllImport("__Internal")]
private static extern string TellPhone(string type,string phone);
public TextMeshProUGUI text;
public TMP_InputField inputField;
void Start()
{
ReportReady();//向vue报告脚本初始化完成
}
public void OpenPhone()
{
TellPhone("tellphone",inputField.text);
}
public void receiveMsgFromVue(string token) {
text.text = token;
Debug.Log("接受来自vue的消息 == " + token);
}
}
放在tccc-demo-vue\src\路径下,如下图所示:
打开index.html:
SendPhone是Unity发送给网页的方法,sendMsgToUnity方法是网页发送个Unity的方法。
index.html完整代码如下:
Unity WebGL Player | Web731
增加和Unity交互的方法
把原先显示的界面代码删除掉
style 部分也删掉
对Vue不熟悉,我的理解是这样的(理解不对请留言指正)
其中
onMounted(()=>{
window.addEventListener('message', unityWatch,true)
})
是事件,对Unity发送来的消息进行监听。
function vueSendToUnity(){
console.log(statusMap[status.value])
unityIframe.value.contentWindow.sendMsgToUnity({userId:'****',状态:status.value|| '加载中...'})
}
是vue把消息发送到Unity端。
是Unity部分进行显示(其中stytle的height:100% 不起作用,有知道的请留言,谢谢,所以我改为了height:100vh)。
Container.vue修改后代码如下:
测试运行时得保证终端npm run dev在运行中
在Unity 的界面上输入手机号点击拨打,电话打了出去,同时Unity端收到了vue发送过来的消息。
这时候如果需要Unity在网页内全屏,且不显示滚动条,需要打开Unity的index.html进行再次修改:
index.html的修改后如下:
Unity WebGL Player | Web731
打开Unity\TemplateData路径下的style.css增加:
html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden;}
.webgl-content{width: 100%; height: 100%;}
.unityContainer{width: 100%; height: 100%;}
style.css完整脚本如下:
body { padding: 0; margin: 0 }
#unity-container { position: absolute }
#unity-container.unity-desktop { left: 50%; top: 50%; transform: translate(-50%, -50%) }
#unity-container.unity-mobile { width: 100%; height: 100% }
#unity-canvas { background: #231F20 }
.unity-mobile #unity-canvas { width: 100%; height: 100% }
#unity-loading-bar { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: none }
#unity-logo { width: 154px; height: 130px; background: url('unity-logo-dark.png') no-repeat center }
#unity-progress-bar-empty { width: 141px; height: 18px; margin-top: 10px; background: url('progress-bar-empty-dark.png') no-repeat center }
#unity-progress-bar-full { width: 0%; height: 18px; margin-top: 10px; background: url('progress-bar-full-dark.png') no-repeat center }
#unity-footer { position: relative }
.unity-mobile #unity-footer { display: none }
#unity-webgl-logo { float:left; width: 204px; height: 38px; background: url('webgl-logo.png') no-repeat center }
#unity-build-title { float: right; margin-right: 10px; line-height: 38px; font-family: arial; font-size: 18px }
#unity-fullscreen-button { float: right; width: 38px; height: 38px; background: url('fullscreen-button.png') no-repeat center }
#unity-warning { position: absolute; left: 50%; top: 5%; transform: translate(-50%); background: white; padding: 10px; display: none }
html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden;}
.webgl-content{width: 100%; height: 100%;}
.unityContainer{width: 100%; height: 100%;}
但是vue的这个右侧还是有滚动条,还没找到隐藏的方法,有知道的同学请留言,谢谢。