栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

UnityWebGL与JS前端交互,不通过HTML

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UnityWebGL与JS前端交互,不通过HTML

在unity特殊文件夹Plugins下,首先建立一个后缀名为jslib文件的名称,自行定义文件名称:

var MyPlugins = {
    $unityGameObjectName: "",
    //得到unityGameObjectName接收消息的物体
    GetUnityGameObjectName: function(GameObjectName_) {
        unityGameObjectName = Pointer_stringify(GameObjectName_);
        console.log("Untiy发送到JS的参数: " + unityGameObjectName);

        var a = "4565";
        //JS往Unity发送消息
        SendMessage(unityGameObjectName, "TestB", a);
    }
};
autoAddDeps(MyPlugins, '$unityGameObjectName');
mergeInto(LibraryManager.library, MyPlugins);
  1. $unityGameObjectName: 定义接收物体的变量名,其中美元符在JS里是可以当做identifier的,也就是说可以当成变量名称,或者函数名称;
  2. GetUnityGameObjectName: js中写得函数,也就是C#调用的 js 函数;
  3. Pointer_stringify(str): 是固定写法,表示要传入一个参数,类型为str;
  4. mergeInto(LibraryManager.library,MyPlugins): 固定写法;
using UnityEngine;
using System.Runtime.InteropServices;

public class UnityCallJS : MonoBehaviour
{
    [DllImport("__Internal")]
    public static extern void GetUnityGameObjectName(string str);
    void Start()
    {
        string str = gameObject.name;
        //Unity调用JS方法
        GetUnityGameObjectName(str);
    }
    
    public void TestB(string str)
    {
       UnityEngine.Debug.Log("接收网页传过来的参数:" + str);
    }
}

使用 [DllImport("__Internal")] 与外部脚本交互,extern 是声明在外部实现的方法,所以需要用static修饰。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900045.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号