• Unity Webgl与JS相互交互 Unity 2021.2之后的版本


    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());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    }
    后边直接看官方文档里边的里边就可以了

  • 相关阅读:
    网页制作基础大三dw作业 基于HTML+CSS+JavaScript新能源汽车租赁(6个页面)
    WAIC|九章云极DataCanvas公司携因果学习技术成果精彩亮相!
    Jetbrains New UI 尝鲜
    1031 查验身份证 (分数 15)【C++】
    Linux执行命令
    MySQL 面试题
    双11网络机顶盒哪个好?数码博主横评20款盘点网络机顶盒排名
    闲置的华为悦盒搭建海思NAS&Ubuntu系统(二)
    读取一张图片各种颜色占比
    Flak-SQLAlchemy的使用
  • 原文地址:https://blog.csdn.net/charlsdm/article/details/126241355