一 、Unity 调用 Js
1、在Unity工程中新建一个后缀名为:.jslib文件
2、在.jslib文件中编写unity调用js代码,多个方法之间记得使用,号隔开,要不然打包的时候会报错。
mergeInto(LibraryManager.library,{
UpdateDatabaseScore:function(score1,score2,score3,score4,score5,score6,totalscore)
{
// js端写好的函数
updateStudentScore(score1,score2,score3,score4,score5,score6,totalscore);
},
H5TTS:function(content){
// 在Unity中向js传递字符串时需要在js中使用Pointer_stringify(str)进行转换。
h5Tts(Pointer_stringify(content));
}
});
3、在c#代码中调用
[DllImport("__Internal")]
public static extern void UpdateDatabaseScore(float score1,float score2,float score3,float score4,float score5,float score6,float totalscore);
[DllImport("__Internal")]
public static extern void H5TTS(string content);
/// <summary>
/// unity 调用js 端进行更新数据
/// </summary>
/// <param name="score1"></param>
/// <param name="score2"></param>
/// <param name="score3"></param>
/// <param name="score4"></param>
/// <param name="score5"></param>
/// <param name="score6"></param>
/// <param name="totalscore"></param>
public void UpdateDBScore(float score1,float score2,float score3,float score4,float score5,float score6,float totalscore)
{
#if !UNITY_EDITOR
UpdateDatabaseScore(score1,score2,score3,score4,score5,score6,totalscore);
#endif
}
/// <summary>
/// 由于Unity在webgl平台下请求百度token时会出现跨域问题,故在h5端进行语音合成
/// </summary>
/// <param name="content"></param>
public void SendTTS(string content)
{
Debug.Log("Send txt"+content);
#if !UNITY_EDITOR
H5TTS(content);
#endif
}
二、Js 调用 Unity
1、在js中调用C#代码
gameInstance.SendMessage("GameCtrl","OnTTSComplete",allTime);
2、C#中执行的代码
/// <summary>
/// 语音合成结束的H5端调用
/// </summary>
/// <param name="isSuccess"></param>
public void OnTTSComplete(float time)
{
Debug.Log("js调用成功:"+time);
EventCenter.Broadcast<float>(EventDefine.OnTTSComplete,time);
}