C#调用JS实现

在做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的方式。

posted @   Phopen  阅读(551)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示