Unity WebGL C#--- JavaScript API 开发指南

本节适用于想要添加或修改JavaScript API的开发人员。你可以找到以下资料:
1,c#和JavaScript之间交换信息的方法(双向)
2,实现让两种语言互操作的事件和方法。
官方论坛代码案例:
https://forum.unity.com/threads/webgl-throwing-abort-104-on-callback-from-jslib-function.534720/
https://docs.unity3d.com/Packages/com.unity.industrial.forma@3.0/manual/forma-js-api-devGuide.html
https://github.com/emscripten-core/emscripten/blob/ee17f05c0a45cad728ce0f215f2d2ffcdd75434b/src/library_browser.js#L715

如需参考JS交互源码去Unity安装目录下查找如下本地路径:
C:\Program Files\Unity\Hub\Editor\2019.4.31f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\src\library_browser.js

为了将信息从c#发送到JavaScript, 可以触发事件或在已知的内存位置设置数据。
目前在js可以通过两个方式调用C#端函数一是可以通过SendMessage() 主动给C# 端发送消息,另外一个是通过委托事件回调调用C#端函数。
在JavaScript中,调用这个函数:Module.dynCall_v(this.#dynamicCalls.functionName(函数));

Module有不同的风格。dynCall,具体取决于参数类型和返回值。下划线(_)后的第一个字母是返回类型。后面是参数类型。可用的值包括:
v: void(无返回值方法)
i: int(int类型返回值)
f: float(float类型返回值)
d: double(double类型返回值)
使用案例:Module.dynCall_vi(函数,参数); 方法里vi里v指的是返回值是void,i值是int或指针类型,字节数组是指针类型,f为float类型,所以:
//没有参数是 JsCallCsTest.callback 为js库中申请的委托类型函数

Module.dynCall_v(JsCallCsTest.callback);// 一个参数是
Module.dynCall_vi(JsCallCsTest.callback, [param1]);//两个参数是
Module.dynCall_vii(JsCallCsTest.callback, [param1, param2]);//三个参数是
Module.dynCall_viii( JsCallCsTest.callback, [param1, param2, param3]);//四个参数是
Module.dynCall_viiii( JsCallCsTest.callback, [param1, param2, param3, param4]);//五个参数

1.C#端和JS端通过委托事件回调调用函数
1.案例1:
1.C#端代码代码命名要求
1.C#绑定js方法 ProvideCallback 方法名、返回值、参数数量要与(js库).jslib一模一样
2.要传入js的方法要加MonoPInvokeCallback
C#代码案例:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using AOT;using UnityEngine;
public class Token : MonoBehaviour {
   
    [DllImport ("__Internal")]
   //方法名与参数返回值要与jslib里的方法名一模一样
    public static extern void ProvideCallback (Action<string> action);
    void Start () {
   
        ProvideCallback (Callback);
    }
 // 需要加MonoPInvokeCallback 标记
    [MonoPInvokeCallback (typeof (Action<string>))]
    public static void Callback 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值