



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Unity2025發(fā)布WebGL與網(wǎng)頁交互問題的解決目錄(一)首先說Unity調(diào)用頁面方法的辦法。(二)其次說說頁面方法調(diào)用Unity內(nèi)方法的辦法。
(一)首先說Unity調(diào)用頁面方法的辦法。
首先是需要在工程的Asset目錄里面建一個(gè)Plugins文件夾,然后在文件夾里面創(chuàng)建一個(gè).txt文件,名字倒是無所謂,創(chuàng)建好后要把擴(kuò)展名改成.jslib。文件要包含類似如下內(nèi)容:
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的第二個(gè)參數(shù)是可以修改的,第二個(gè)參數(shù)是一個(gè)對象,這個(gè)對象里面包含了多個(gè)方法的引用,這些方法(例如:Hello()、BingdeWebGLTexture()等)都是在Unity編程中可以引入的。這些方法內(nèi)調(diào)用的方法(例如:wiindow.alert()、GLctx.bindTexture()等)都是將來頁面中可以被調(diào)用的。
具體在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());
(二)其次說說頁面方法調(diào)用Unity內(nèi)方法的辦法。
簡單說就是使用unityInstance發(fā)消息就行了。具體方法定義如下:
unityInstance.SendMessage(objectName,methodName,value);
其中的參數(shù)objectName是Unity場景列表中的物體的名字,這里注意要保證場景中只有一個(gè)叫這個(gè)名字的物體,別出現(xiàn)重名的,否則亂套了。methodName是發(fā)消息的方法名,value是方法的參數(shù),這個(gè)參數(shù)可以沒有,有的話可以是整數(shù)或者字符串。
具體使用方式參考如下:
unityInstance.SendMessage('MyGameObject','MyFunction');
unityInstance.SendMessage('MyGameObject','MyFunction',5);
unityInstance.SendMessage('MyGameObject','MyFunction','MyString');
不過這個(gè)unityInstance是內(nèi)部對象(我不知道怎么說這個(gè)話比較準(zhǔn)確,暫時(shí)先這么說吧。),如果要在外部引用這個(gè)對象,頁面代碼請參考如下:
varmyGameInstance=null;
createUnityInstance(canvas,config).then((unityInstance)={myGameInstance=unityInstance;});
varSendCmd=function(funName){
myG
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用戶導(dǎo)向的設(shè)計(jì)思維與實(shí)踐策略試題及答案
- 中職烹飪英語試題及答案
- 理解助理廣告師考試市場與品牌的互動關(guān)系模型試題及答案
- 綠化保潔考試試題及答案
- 全球紡織品設(shè)計(jì)的前沿技術(shù)試題及答案
- 功能性廣告設(shè)計(jì)師的試題及答案
- 中學(xué)教師招聘試題及答案
- 旅游商品學(xué)試題及答案
- 藏族文化面試題及答案
- 全景式解析廣告設(shè)計(jì)師考試內(nèi)容試題及答案
- 部編人教版五年級語文下冊第18課《威尼斯的小艇》精美課件
- 消防(電動車)火災(zāi)安全知識課件
- VSM(價(jià)值流圖中文)課件
- 上海交通大學(xué)醫(yī)學(xué)院附屬仁濟(jì)醫(yī)院-日間手術(shù)管理信息化實(shí)踐與發(fā)展
- 有源、無源濾波器實(shí)驗(yàn)報(bào)告
- 供應(yīng)室手工清洗操作流程課件
- 核電站入廠安全培訓(xùn)課件
- 節(jié)日主題班會 《感恩母親節(jié)》教學(xué)課件
- 新加坡sm214th面經(jīng)44緋的同學(xué)
- 全國第七屆中小學(xué)音樂優(yōu)質(zhì)課比賽教學(xué)設(shè)計(jì)跳圓舞曲的小貓
- 圍術(shù)期過敏反應(yīng)診治的專家共識(全文)
評論
0/150
提交評論