



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Unity2025发布WebGL与网页交互问题的解决目录(一)首先说Unity调用页面方法的办法。(二)其次说说页面方法调用Unity内方法的办法。
(一)首先说Unity调用页面方法的办法。
首先是需要在工程的Asset目录里面建一个Plugins文件夹,然后在文件夹里面创建一个.txt文件,名字倒是无所谓,创建好后要把扩展名改成.jslib。文件要包含类似如下内容:
mergeInto(LibraryManager.library,{
Hello:function(){
window.alert("Hello,world!");
HelloString:function(str){
window.alert(Pointer_stringify(str));
PrintFloatArray:function(array,size){
for(vari=0;isize;i++)
console.log(HEAPF32[(array2)+i]);
AddNumbers:function(x,y){
returnx+y;
StringReturnValueFunction:function(){
varreturnStr="bla";
varbufferSize=lengthBytesUTF8(returnStr)+1;
varbuffer=_malloc(bufferSize);
stringToUTF8(returnStr,buffer,bufferSize);
returnbuffer;
BindWebGLTexture:function(texture){
GLctx.bindTexture(GLctx.TEXTURE_2D,GL.textures[texture]);
这其中只有mergeInto的第二个参数是可以修改的,第二个参数是一个对象,这个对象里面包含了多个方法的引用,这些方法(例如:Hello()、BingdeWebGLTexture()等)都是在Unity编程中可以引入的。这些方法内调用的方法(例如:wiindow.alert()、GLctx.bindTexture()等)都是将来页面中可以被调用的。
具体在Unity编程中引入方法的方式以C#为例:
首先需要引入命名空间:
usingSystem.Runtime.InteropServices;
其次需要写具体引入代码:
[DllImport("__Internal")]privatestaticexternvoidHello();
参考以下代码引入和使用示例
usingUnityEngine;
usingSystem.Runtime.InteropServices;
publicclassNewBehaviourScript:MonoBehaviour{
[DllImport("__Internal")]
privatestaticexternvoidHello();
[DllImport("__Internal")]
privatestaticexternvoidHelloString(stringstr);
[DllImport("__Internal")]
privatestaticexternvoidPrintFloatArray(float[]array,intsize);
[DllImport("__Internal")]
privatestaticexternintAddNumbers(intx,inty);
[DllImport("__Internal")]
privatestaticexternstringStringReturnValueFunction();
[DllImport("__Internal")]
privatestaticexternvoidBindWebGLTexture(inttexture);
voidStart(){
Hello();
HelloString("Thisisastring.");
float[]myArray=newfloat[10];
PrintFloatArray(myArray,myArray.Length);
intresult=AddNumbers(5,7);
Debug.Log(result);
Debug.Log(StringReturnValueFunction());
vartexture=newTexture2D(0,0,TextureFormat.ARGB32,false);
BindWebGLTexture(texture.GetNativeTextureID());
(二)其次说说页面方法调用Unity内方法的办法。
简单说就是使用unityInstance发消息就行了。具体方法定义如下:
unityInstance.SendMessage(objectName,methodName,value);
其中的参数objectName是Unity场景列表中的物体的名字,这里注意要保证场景中只有一个叫这个名字的物体,别出现重名的,否则乱套了。methodName是发消息的方法名,value是方法的参数,这个参数可以没有,有的话可以是整数或者字符串。
具体使用方式参考如下:
unityInstance.SendMessage('MyGameObject','MyFunction');
unityInstance.SendMessage('MyGameObject','MyFunction',5);
unityInstance.SendMessage('MyGameObject','MyFunction','MyString');
不过这个unityInstance是内部对象(我不知道怎么说这个话比较准确,暂时先这么说吧。),如果要在外部引用这个对象,页面代码请参考如下:
varmyGameInstance=null;
createUnityInstance(canvas,config).then((unityInstance)={myGameInstance=unityInstance;});
varSendCmd=function(funName){
myG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院放射科火灾应急预案(3篇)
- 火灾专项环境应急预案(3篇)
- 音频处理与编程基础试题及答案
- 2025年企业战略创新试题及答案
- 虚拟化技术应用试题及答案
- 计算机考试常见问题与试题
- 农村土地流转的法律问题试题及答案
- 法律文本与社会现实的对应关系试题及答案
- 软件架构设计的关键试题及答案
- 2025年公司战略变化与风险管理试题及答案
- GA/T 832-2014道路交通安全违法行为图像取证技术规范
- 博士生招生面试评分表
- SWOT分析法很全面课件
- 膀胱造瘘的护理课件
- 基坑工程施工验收记录表
- 消防应急疏散演练人员签到表(标准通用版)
- 微生物实验室病原微生物评估报告
- 陕旅版五年级英语上册句型词汇知识点总结
- 汉字构字的基本原理和识字教学模式分析
- RouterOS介绍
- 十字轴锻造成型工艺及模具设计毕业论文
评论
0/150
提交评论