当前位置:网站首页>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());
}
}
后边直接看官方文档里边的里边就可以了
边栏推荐
猜你喜欢
随机推荐
50道Redis面试题,来看看你会多少?
The difference between approach and method
win10 uwp 手动锁Bitlocker
字符设备的注册
华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
如何在 PC 机上测试移动端的网页?
Engaged in software testing for a year, only basic functional testing, how to further study?
megacli磁盘阵列
最强分布式锁工具:Redisson
.NET 6学习笔记(4)——解决VS2022中Nullable警告
Wallys/QCA 9880/802.11ac Mini PCIe Wi-Fi Module, Dual Band, 2,4GHz / 5GHz advanced edition
动态RDLC报表(三)
An in-depth understanding of the implementation principle of Hybrid
动态RDLC报表(七)
[Code Audit] - PHP project class RCE and files include download and delete
史上最全架构师知识图谱
Guo Wei (Guo Daxia): Nine Yes or No about open source
我不写单元测试,被批了
How to choose a good SaaS knowledge base tool?
loadrunner脚本--参数化