Unity与JavaScript之间的相互调用

本文详细介绍了如何在Unity中调用JavaScript代码以及JavaScript如何调用Unity的方法。在Unity中创建.jslib文件并编写接口,然后在C#中使用DllImport调用这些接口。同时,展示了在JavaScript端如何通过gameInstance.SendMessage调用Unity的C#方法。内容涵盖数据传递、错误处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、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);
    }
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值