UnityWebGL与JS前端交互,不通过HTML

在unity特殊文件夹Plugins下,首先建立一个后缀名为jslib文件的名称,自行定义文件名称:

var MyPlugins = {
    $unityGameObjectName: "",
    //得到unityGameObjectName接收消息的物体
    GetUnityGameObjectName: function(GameObjectName_) {
        unityGameObjectName = Pointer_stringify(GameObjectName_);
        console.log("Untiy发送到JS的参数: " + unityGameObjectName);

        var a = "4565";
        //JS往Unity发送消息
        SendMessage(unityGameObjectName, "TestB", a);
    }
};
autoAddDeps(MyPlugins, '$unityGameObjectName');
mergeInto(LibraryManager.library, MyPlugins);
  1. $unityGameObjectName: 定义接收物体的变量名,其中美元符在JS里是可以当做identifier的,也就是说可以当成变量名称,或者函数名称;
  2. GetUnityGameObjectName: js中写得函数,也就是C#调用的 js 函数;
  3. Pointer_stringify(str): 是固定写法,表示要传入一个参数,类型为str;
  4. mergeInto(LibraryManager.library,MyPlugins): 固定写法;
using UnityEngine;
using System.Runtime.InteropServices;

public class UnityCallJS : MonoBehaviour
{
    [DllImport("__Internal")]
    public static extern void GetUnityGameObjectName(string str);
    void Start()
    {
        string str = gameObject.name;
        //Unity调用JS方法
        GetUnityGameObjectName(str);
    }
    
    public void TestB(string str)
    {
       UnityEngine.Debug.Log("接收网页传过来的参数:" + str);
    }
}

使用 [DllImport("__Internal")] 与外部脚本交互,extern 是声明在外部实现的方法,所以需要用static修饰。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值