" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity2021發(fā)布WebGL與網(wǎng)頁交互問題的解決

 更新時(shí)間:2022年05月15日 16:52:12   作者:ttod  
本文主要介紹了Unity2021發(fā)布WebGL與網(wǎng)頁交互問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

(一)首先說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(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]);
  },
 
});

這其中只有mergeInto的第二個(gè)參數(shù)是可以修改的,第二個(gè)參數(shù)是一個(gè)對(duì)象,這個(gè)對(duì)象里面包含了多個(gè)方法的引用,這些方法(例如:Hello()、BingdeWebGLTexture()等)都是在Unity編程中可以引入的。這些方法內(nèi)調(diào)用的方法(例如:wiindow.alert()、GLctx.bindTexture()等)都是將來頁面中可以被調(diào)用的。

具體在Unity編程中引入方法的方式以C#為例:

首先需要引入命名空間:

using System.Runtime.InteropServices;

其次需要寫具體引入代碼:

[DllImport("__Internal")] private static extern void Hello();

參考以下代碼引入和使用示例

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.GetNativeTextureID());
    }
}

(二)其次說說頁面方法調(diào)用Unity內(nèi)方法的辦法。

簡(jiǎn)單說就是使用unityInstance發(fā)消息就行了。具體方法定義如下:

unityInstance.SendMessage(objectName, methodName, value);

其中的參數(shù)objectName是Unity場(chǎng)景列表中的物體的名字,這里注意要保證場(chǎng)景中只有一個(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)部對(duì)象(我不知道怎么說這個(gè)話比較準(zhǔn)確,暫時(shí)先這么說吧。),如果要在外部引用這個(gè)對(duì)象,頁面代碼請(qǐng)參考如下:

var myGameInstance = null;
      createUnityInstance(canvas, config).then((unityInstance) => {myGameInstance = unityInstance;});
      
var SendCmd = function(funName){
        myGameInstance.SendMessage("ZongCai", funName);
}

這樣就是使用myGameInstance獲得了unityInstance的引用,可以用myGameInstance來發(fā)消息了。

官方參考:

WebGL:與瀏覽器腳本交互 - Unity 手冊(cè)

到此這篇關(guān)于Unity2021發(fā)布WebGL與網(wǎng)頁交互問題的解決的文章就介紹到這了,更多相關(guān)Unity2021發(fā)布WebGL與網(wǎng)頁交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用c# 自動(dòng)更新程序

    用c# 自動(dòng)更新程序

    這篇文章主要介紹了用c# 自動(dòng)更新程序的代碼示例,幫助大家更好的理解和使用c#編程語言,感興趣的朋友可以了解下
    2020-11-11
  • C#實(shí)現(xiàn)鼠標(biāo)移動(dòng)到曲線圖上顯示值的方法

    C#實(shí)現(xiàn)鼠標(biāo)移動(dòng)到曲線圖上顯示值的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)鼠標(biāo)移動(dòng)到曲線圖上顯示值的方法,是C#的WinForm窗體程序設(shè)計(jì)中非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • C#保存listbox中數(shù)據(jù)到文本文件的方法

    C#保存listbox中數(shù)據(jù)到文本文件的方法

    這篇文章主要介紹了C#保存listbox中數(shù)據(jù)到文本文件的方法,涉及C#操作listbox數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#使用Process類調(diào)用外部exe程序

    C#使用Process類調(diào)用外部exe程序

    本文通過兩個(gè)示例講解了一下Process類調(diào)用外部應(yīng)用程序的基本用法,并簡(jiǎn)單講解了StartInfo屬性,有需要的朋友可以參考一下。
    2016-03-03
  • C#訪問網(wǎng)絡(luò)共享文件夾的方法

    C#訪問網(wǎng)絡(luò)共享文件夾的方法

    這篇文章主要為大家詳細(xì)介紹了C#訪問網(wǎng)絡(luò)共享文件夾的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Visual Studio C#創(chuàng)建windows服務(wù)程序

    Visual Studio C#創(chuàng)建windows服務(wù)程序

    用Visual C#創(chuàng)建Windows服務(wù)不是一件困難的事,本文就將指導(dǎo)你一步一步創(chuàng)建一個(gè)Windows服務(wù)并使用它,本文主要介紹了Visual Studio C#創(chuàng)建windows服務(wù)程序,感興趣的可以了解一下
    2024-01-01
  • C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用

    C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用

    這篇文章主要給大家介紹了關(guān)于C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • C#中的委托數(shù)據(jù)類型簡(jiǎn)介

    C#中的委托數(shù)據(jù)類型簡(jiǎn)介

    委托是一個(gè)類型安全的對(duì)象,它指向程序中另一個(gè)以后會(huì)被調(diào)用的方法(或多個(gè)方法)。通過本文給大家介紹C#中的委托數(shù)據(jù)類型簡(jiǎn)介,對(duì)c委托類型相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • Winform在DataGridView中顯示圖片

    Winform在DataGridView中顯示圖片

    本文主要介紹在DataGridView如何顯示圖片,簡(jiǎn)單實(shí)用,需要的朋友可以參考下。
    2016-05-05
  • C# DataGridView綁定數(shù)據(jù)源的方法

    C# DataGridView綁定數(shù)據(jù)源的方法

    這篇文章主要為大家詳細(xì)介紹了C# DataGridView綁定數(shù)據(jù)源的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評(píng)論

永清县| 礼泉县| 清水河县| 神木县| 察隅县| 新绛县| 铜鼓县| 台前县| 景宁| 洛川县| 万载县| 巴彦县| 扶余县| 姜堰市| 桃园县| 黄陵县| 新宁县| 泸定县| 乃东县| 丰县| 泽普县| 高雄市| 嘉义县| 内江市| 六盘水市| 孟州市| 雷山县| 当涂县| 含山县| 中卫市| 区。| 周口市| 新乡市| 抚顺县| 错那县| 敦化市| 宁陕县| 阿拉善盟| 陇西县| 嫩江县| 武强县|