test.jslib文件,必须放到Assets/Plugins下,这里是:Assets/Plugins/WebGL

mergeInto(LibraryManager.library, {

    Hello: function () {
window.alert("Hello, world!");
}, HelloString: function (str) {
//这里使用Pointer_stringify方法转换unity传递过来的字符串
window.alert(Pointer_stringify(str));
}, PrintFloatArray: function (array, size) {
for(var i = 0; i < size; i++){
//遍历float数组使用HEAPF32,更多类型:HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64
console.log(HEAPF32[(array >> 2) + i]);
}
}, AddNumbers: function (x, y) {
//这里unity传递过来int类型数字,不需要转换
return x + y;
}, //返回一个字符串到unity
StringReturnValueFunction: function () {
var returnStr = "bla"; var bufferSize = lengthBytesUTF8(returnStr) + 1;
var buffer = _malloc(bufferSize);
stringToUTF8(returnStr, buffer, bufferSize); return buffer;
}, BindWebGLTexture: function (texture) {
GLctx.bindTexture(GLctx.TEXTURE_2D, GL.textures[texture]);
}, });

callJSTest.cs文件,绑定到任意GameObject中。

using System.Runtime.InteropServices;
using UnityEngine; public class callJSTest : MonoBehaviour { [DllImport("__Internal")]
private static extern void Hello(); [DllImport("__Internal")]
private static extern void HelloString(string str); [DllImport("__Internal")]
private static extern void PrintFloatArray(float[] array, int size); [DllImport("__Internal")]
private static extern int AddNumbers(int x, int y); [DllImport("__Internal")]
private static extern string StringReturnValueFunction(); [DllImport("__Internal")]
private static extern void BindWebGLTexture(int texture); void Start() {
Hello(); HelloString("This is a string."); float[] myArray = new float[];
PrintFloatArray(myArray, myArray.Length); int result = AddNumbers(, );
Debug.Log(result); Debug.Log(StringReturnValueFunction()); var texture = new Texture2D(, , TextureFormat.ARGB32, false);
BindWebGLTexture(texture.GetNativeTextureID());
}
}

源码地址:https://github.com/kingBook/unityWebGLCallJS

unity WegGL 调用js的更多相关文章

  1. Unity——Js和Unity互相调用

    Unity项目可以打包成WebGl,打包后的项目文件: Build中是打包后的Js代码: Index.html是web项目的入口,里面可以调整web的自适应,也可以拿去嵌套: TemplateData ...

  2. 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数

    [问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...

  3. iOS开发--OC调用JS篇

    OC调用JS篇 其中相对应的html部分如下: <html> <header> <meta http-equiv="Content-Type" con ...

  4. js调用php和php调用js的方法举例

    js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...

  5. ActiveX(三)ActiveX 调用 Js

    在上一篇随笔: ActiveX(二)Js 监听 ActiveX中的事件  中,已经可以实现 Js 监听 ActiveX中的事件,至此.Js 和 ActiveX 已经可以实现双向通讯了.但是.这样的实现 ...

  6. 配合 APP 调用 JS 的一次尝试

    项目初衷 最初的场景是用户在对购物车的操作中,由于用户对购物车的每次操作(包括选择,调整数量)都需要计算商品的促销和分组的情况,而这段逻辑的计算都需要调用后端的接口,那么瓶颈来了: 请求时间长--一次 ...

  7. JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz

     iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码)     最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...

  8. c# winform 调用js

    1. 在winform中加入一个 WebBrowser 控件: 2. webBrowser控件加载html文件,html文件中包含了js代码, 代码如下(必须在 InitializeComponent ...

  9. a 标签中调用js的几种方法 文章摘自他人

    我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题 ...

随机推荐

  1. Java中的局部变量、成员变量和静态变量

    直接看代码 public class Variable { // 静态变量,属于类的变量,且用关键字static声明,不属于实例,虽然可以通过实例来调用,但是不建议 private static in ...

  2. python常用模块: random模块, time模块, sys模块, os模块, 序列化模块

    一. random模块  import random # 任意小数 print(random.random()) # 0到1的任意小数 print(random.uniform(-10, 10)) # ...

  3. 20165312 预备作业3 Linux安装及学习

    Linux安装及学习 一.安装Vmware虚拟机以及Ubuntu中遇到的问题 因为之前安装过Vmware虚拟机,考虑到两者没有太大的差别,就所以就没有再安装Vbox虚拟机. 在安装Vmware虚拟机增 ...

  4. POJ3635 Full Tank?

    [题解] 用dijkstra算法求最短路.同时考虑在每个节点加油(一单位)与否. [代码] #include <iostream> #include <map> #includ ...

  5. 一篇文章,教你学会Git

    在日常工作中,经常会用到Git操作.但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼.本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令. 一.Git工作流程 以 ...

  6. solr7.4 安装与使用

    1.solr7环境要求 solr7需要java8环境,且需要在环境变量中添加 JAVA_HOME变量. 2.solr 安装 下载地址 https://lucene.apache.org/solr/mi ...

  7. [Unity基础]RenderTexture

    参考链接: https://www.cnblogs.com/Jimm/p/5951362.html 一.相关API 1.Texture2D.ReadPixels 从RenderTexture.acti ...

  8. 浏览器预览office文件(word,Excel,等)

    提示:预览是通过后台转pdf到前台展示的过程,当然网上也有购买的api 举个栗子:(http://www.officeweb365.com/) <!DOCTYPE html> <ht ...

  9. 4.安装mitmproxy问题处理

    上次进行到安装 证书出现问题: 1.主要原因是:对应python版本不一致 需要3.6以上的版本 才能在cmd黑窗口执行 mitmdump命令 生成证书 如图: windows 版本 双击安装 mit ...

  10. 1.python进程、线程、多线程

    2018-07-16 1.进程 简单理解:进程就是一段程序执行的过程. 广义理解:进程就是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程是cpu调度和分配的基本的分配单元,也是基本的 ...