当前位置:网站首页>Unity Webgl与JS相互交互 Unity 2021.2之后的版本
Unity Webgl与JS相互交互 Unity 2021.2之后的版本
2022-08-09 17:13:00 【charlsdm】
Interaction with browser scripting
When building content for the web, you might need to communicate with other elements on your web page. Or you might want to implement functionality using Web APIs which Unity doesn’t currently expose by default. In both cases, you need to directly interface with the browser’s JavaScript engine. Unity WebGL
provides different methods to do this.
Calling JavaScript functions from Unity scripts
The recommended way of using browser JavaScript in your project is to add your JavaScript sources to your project, and then call those functions directly from your script code. To do so, place files with JavaScript code using the .jslib extension under a “Plugins” subfolder in your Assets folder. The plugin file needs to have a syntax like this:
mergeInto(LibraryManager.library, {
Hello: function () {
window.alert(“Hello, world!”);
},
HelloString: function (str) {
window.alert(UTF8ToString(str));
},
PrintFloatArray: function (array, size) {
for(var i = 0; i < size; i++)
console.log(HEAPF32[(array >> 2) + i]);
},
AddNumbers: function (x, y) {
return x + y;
},
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]);
},
});
Then you can call these functions from your C# scripts
like this:
using UnityEngine;
using System.Runtime.InteropServices;
public class NewBehaviourScript : 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[10];
PrintFloatArray(myArray, myArray.Length);
int result = AddNumbers(5, 7);
Debug.Log(result);
Debug.Log(StringReturnValueFunction());
var texture = new Texture2D(0, 0, TextureFormat.ARGB32, false);
BindWebGLTexture(texture.GetNativeTexturePtr());
}
}
后边直接看官方文档里边的里边就可以了
边栏推荐
- LeetCode做题小结
- leetcode/链表中环的入口节点
- 手写flexible.js的原理实现,我终于明白移动端多端适配
- 太细了!阿里大佬耗时39天整理出一份Redis进阶笔记,满满的干货
- win10 uwp 简单MasterDetail
- One-key login principle of local number
- The difference between approach and method
- .NET 6学习笔记(4)——解决VS2022中Nullable警告
- Can't install the Vmware virtual machine on the Ark Kai server?
- Ark Standalone/Administrator Special Item Command Codes
猜你喜欢
Tan Zhongyi: Do you know who the "Queen of Open Source" is?
学长告诉我,大厂MySQL都是通过SSH连接的
AlphaControls 控件 TsPanel TsGroupBox 块与组的结合
uniapp电影购票选座系统源码
本机号码一键登录原理
Cortex-A7 MPCore 架构
谭中意:你知道 “开源女王” 是谁吗?
Logic unauthorized and horizontal and vertical unauthorized payment tampering, verification code bypass, interface
Self-taught software testing, how far can I go out to find a job?
IMX6ULL—汇编LED灯
随机推荐
Logic unauthorized and horizontal and vertical unauthorized payment tampering, verification code bypass, interface
jmeter-录制脚本
总结篇4:redis 核心数据存储结构及核心业务模型实现应用场景
[极客大挑战 2019]HardSQL
The strongest distributed lock tool: Redisson
[Code Audit] - PHP project class RCE and files include download and delete
Li Yuanyuan: iMetaLab Suite metaproteomics data analysis and visualization (video + PPT)
CPU状态信息us,sy,ni,id,wa,hi,si,st含义
About the common Hook encapsulation of DOM (2)
The difference between approach and method
有什么好的开源自动化测试框架可以推荐?
手写flexible.js的原理实现,我终于明白移动端多端适配
学长告诉我,大厂MySQL都是通过SSH连接的
mysql generates random name, mobile number, date
Can't install the Vmware virtual machine on the Ark Kai server?
字符设备的注册
苦日子快走开
逻辑越权和水平垂直越权支付篡改,验证码绕过,接口
JMeter笔记6 | JMeter录制(配置代理)
[Pycharm easy to use function]