首页 > 编程语言 >C#调用JS实现

C#调用JS实现

时间:2024-02-20 15:22:41浏览次数:20  
标签:调用 TestReturn val C# TestString JS TestNormal TEST

在做Unity转换微信小程序的时候,由于微信小程序内使用的语言为js,Unity内使用的是C#,所以在一些场景中会有C#调用js的情况出现。

创建.jslib文件

创建文本文档或其他,文件名根据自己需要,将文件后缀名改为.jslib
mylib.jslib文件内容为:

var MyLib = {

  TestNormal: function (val) {
    window.TEST.TestNormal(val);
  },
  TestString: function (str) {
    window.TEST.TestString(Pointer_stringify(str));
  },
  TestReturn: function () {
    return window.TEST.TestReturn();
  }

};
mergeInto(LibraryManager.library, MyLib);

字符串需要使用Pointer_stringify()进行转换,简单值类型可以直接传递。bool类型的值传递:true为1 false为0
一般js中的方法都挂在window对象下面,对应微信小游戏中的GameGlobal。TEST类似于命名空间的作用,可以不用。
对应微信小游戏端,test.js文件内容为:

const TEST = {
    TestNormal(val) {
        //TODO 注意:bool类型的值在此处 true为1 false为0
    },
    TestString(str) {
        //TODO
    },
    TestReturn() {
        retrun 1;
    }
};
GameGlobal.TEST = TEST;
将jslib作为Plugins放在Unity中

C#端调用方式:

    [DllImport("__Internal", EntryPoint = "TestNormal")]
    private static extern void TestNormal(bool val);
    [DllImport("__Internal", EntryPoint = "TestString")]
    private static extern void TestString(string str);
    [DllImport("__Internal", EntryPoint = "TestReturn")]
    private static extern float TestReturn();

    public void Test(bool val, string str)
    {
        TestNormal(val);
        TestString(str);
        float test = TestReturn();
    }

以上就是C#调用js的方式。

标签:调用,TestReturn,val,C#,TestString,JS,TestNormal,TEST
From: https://www.cnblogs.com/phopen/p/18023108

相关文章

  • vscode ssh: Resolver error: Error: XHR failedscode错误
    https://blog.csdn.net/m0_38040006/article/details/126752751https://devpress.csdn.net/cloud-native/64f81cf9993dd34278ee1143.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDUwNjkxNiwiZXhwIjoxNzA5MDE3MzcxLCJpYXQiOjE3MDg0MTI1NzEsInVzZXJuYW1lIjoi......
  • 热辣滚烫,Salesforce开发入门指南:零基础学习宝典!
    开发人员将Salesforce组织扩展到声明式配置之外,构建应用程序,进而优化业务运营。Salesforce开发人员通常会使用两种编程语言:Apex和JavaScript。然而,Salesforce开发不仅仅只包括代码。为了在职业道路上脱颖而出,开发人员还需要了解声明性功能,将组织的设计和性能保持最佳状态。Sal......
  • CF1411F The Thorny Path
    转化一下问题,即为给定\(n,a_{1,\cdots}\)满足\(\sum\limitsa_i=n\)。接下来可以花费\(1\)代价把\(x=y+z\)的\(x\)拆为\(y\)和\(z\)或者把\(y\)和\(z\)合并成\(x\)。求最后的\(a'\)的\(\max\{\proda'_i\}\)和达成的最小代价。首先对于第一问,就......
  • Codeforces Round 900 (Div. 3)
    题目A.只要k出现过就是YES#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;#defineinf0x3f3f3f3fvoidsolve(){intn,k;cin>>n>>k;map<int,int>mp;for(inti=0,x;i<n;i++){cin......
  • 在 CentOS7 部署 ELK8.0
    1、环境准备:关闭防火墙与selinuxsetenforce0#临时关闭SELinuxsed-i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config #永久关闭SELnux(重启生效)2、修改Linux最大打开文件数cat/etc/security/limits.conf|grep-v"^#"|grep-v"^$"*......
  • C++函数用法
    1.getline函数的用法函数声明boolgetline(istream&in,string&s)功能说明从输入流读入一行到变量strings,即使是空格也可以读入。直到出现以下情况为止:读入了文件结束标志读到一个新行(有重载函数可以指定行分隔符,默认是"\n".)达到字符串的最大长度如果getline没有读......
  • EXlucas
    \(EXLucas\)扩展卢卡斯定理·题意试求:\[C^{m}_n\modP\\\\\\\\\\\(P\inN^*)\]注意,\(P\)非整数。·转化可以给他进行质因数分解,成为:\[P=\prod_{i=1}^kp_i^{{\alpha}_i}\]\[\begin{cases}x\equivC^{m}_n(\modp_1^{{\......
  • CentOS7安装nodejs18
    CentOS7安装nodejs18及以上版本会报错,glibc版本过低。升级glibc到2.28。查看glibc版本号#ldd--version1、下载glibc2.28并创建build目录cdwgethttp://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gztarxfglibc-2.28.tar.gzcdglibc-2.28/mkdirbuild2、升级gccyuminstall-y......
  • KU060板卡设计方案:636-基于FMC的KU060高性能 PCIe 载板 AI加速计算卡
    基于FMC的KintexXCKU060高性能PCIe载板 一、板卡概述   板卡主控芯片采用Xilinx公司的KintexUltraScale系列FPGAXCKU060-2FFVA1156。板载2组64bit的DDR4SDRAM,每组容量2GB,可稳定运行在2400MT/s。支持PCIEGen3x8模式及一路FMCHPC接口。同时可提供Windows,Linux......
  • keep_hierarchy约束在三模冗余中的应用
    节选自《FPGA之道》keep_hierarchy是一个综合和实现方面的约束。Xilinx的综合工具XST更倾向于平化HDL代码的层级结构,即将一级级的模块调用机制转换为一个没有子模块的超大模块,这样做的好处是能够进行更好地设计优化工作,因为平化操作去除了原有实体或模块之间的边界限制。不过有些......