Unity工程里面关于JS和C#互相调用详解

Unity3D开发之unity和js通信交互 3.Unity3D开发之unity和js通信交互(老版方法)2.C#(挂在场景 任意物体上) 阅读详情

大家周末好(苦逼的我还在搬砖,哈哈)。
最近接手了一个unity项目,工程里面是js和c#同时开发的(真想锤死这开发者),然后再后续的优化和功能开发中就遇到了js和c#之间调用的问题。
今天我就为大家好好的讲一下这个js和C#之间的调用及其相关注意事项:
首先,我们要明白一点:两种语言的编译顺序,如果我们要C#调用js,那我们肯定要让JS先编译,如果被调用的没有事先被编译,那不是null了?反之亦是如此。(谁先被调用,谁就先编译)。
接着,我们来说一下unity里面编译的顺序。在unity里面主要分为 Standard Assets、Pro Standard Assets、 Plugins和其他文件夹。其编译顺序也是先编译上面三个文件,然后再编译其他文件。
然后,我们来演示JS调用C#(这个时候需要C#先编译!创建一个js脚本,一个C#脚本)
如图:
记得将C#放入三大文件之一
C#脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestC : MonoBehaviour {

    void Start()
    {
     
       
    }
    /// <summary>
    /// js将调用此方法 --参数由js脚本传入
    /// </summary>
    /// <param name="str"></param>

    public void PrintCS(string str)    
    {
        Debug.Log(str + ":C#方法被调用");
    }
}

**js脚本:
**

#pragma strict

function Start ()
{
var cs1=gameObject.GetComponent("TestC");
    (cs1 as TestC ).PrintCS("从js中调用 ");
 
}

其中值得注意的是js脚本创建某个类的对象时,一定要将对象强转为该类类型:
红框内为强转
不然会出现如下报错:
在这里插入图片描述
最后C#调用JS也就很简单了,但是一定要记得脚本编译顺序。
(测试的时候记得在场景中挂载脚本哦,js和c#都要挂载)
好啦!今天就到这里啦,关于c#和js相互调用其实还有很多细节点,大家可以多参考参考相关文档和博客,后续有时间我也会继续分享更多开发技术和乐闻。

js调用unity程序_Unity3D中C#和js方法相互调用 rss"/>通过查找资料,Unity3D中C#和js要相互调用彼此的方法,js文件必须放在"Standard Assets"、 "Pro Standard Assets" 和 "Plugins"这三个文件夹中的任意一个。在Scripts文件夹新建一个C#脚本csTest :public class csTest : MonoBehaviour {void Start () {jsTest ... 阅读详情

相关推荐

Unity 获取WebGL URL中参数,JS调用C#

Unity 获取WebGL URL中参数,JS调用C#

hyp19980829的博客 3480

Unity WebGL C#调用JS脚本

官网文档 目录 一、Unity调用JS脚本 二、JS调用Unity脚本 一、Unity调用JS脚本 1.首先在Unity/Assets/Plugins目录下存放你需要调用的JS脚本 2.在Plugins目录下新建文本文档,后缀改为jslib。 纂写JS脚本内容: mergeInto(LibraryManager.library, { Hello: function () { window.alert("Hello, world!"); }, HelloStri

weixin_44263579的博客 9676

Unity WebGL与JavaScript双向通信实战:从原理到.jslib接口封装

在现代Web开发中,实现网页与嵌入式应用间的数据交互是构建复杂交互体验的核心需求,其底层依赖于WebAssembly(Wasm)与JavaScript的互操作原理。Unity WebGL内容通过Emscripten工具链编译为Wasm模块运行于浏览器沙箱中,JavaScript胶水代码则充当了与网页环境通信的桥梁。理解内存堆(HEAP)管理和类型化数组是实现高效、稳定数据交换的技术关键,这直接决定了应用的性能和可靠性。对于需要深度集成的3D可视化、网页游戏或交互式大屏等应用场景,掌握通过.jslib插件构建

weixin_34236869的博客 941

unity webgl与js交互相互调用

网上有几篇文章,但是他们都只写了一半,现在把完整的过程记录于下 我的需求是在当前页面打开一个新的浮动窗口(不是跳转窗口,也不是打开新标签页) 第一步 先编写一个txt文件,内容为 mergeInto(LibraryManager.library, { //打开新窗口 注意js的方法参数没有类型 OpenNewWindow:function(str) //这个方法名必须和c#中的相同 { window.alert(Pointer_stringify(str)); Ope

吴梓穆的博客 3092

Unity集成内嵌网页插件-支持Android和IOS

本文所用到的插件,是修改自一个日本人keijiro的代码。他的源码地址为:https://github.com/keijiro/unity-webview-integration 为更易于使用,本插件是将其源码由javascript改为C#代码,并做了一些修改和优化,并打包成unitypackage包,可直接导入项目中使用,方便快捷! 本插件支持Unity与网页javascript进行双向交互

home_498的博客 1万+

Unity Puerts入门:从零运行官方Demo,掌握JS/TS游戏开发

在游戏开发领域,脚本语言与原生引擎的桥接技术是实现高效开发与动态更新的关键。其核心原理是通过虚拟机或解释器在原生运行时(如C#)中嵌入脚本引擎(如V8),建立双向通信机制,实现脚本与引擎API的无缝调用。这项技术的核心价值在于提升开发效率、支持热更新,并允许团队利用熟悉的脚本语言(如JavaScript/TypeScript)快速构建游戏逻辑。典型的应用场景包括需要频繁更新内容的游戏、拥有Web前端背景的团队,以及追求快速迭代的原型开发。本文聚焦于Unity引擎中的**Puerts**框架,通过手把手运行官

weixin_34226182的博客 342

Unity 发布WebGL C#与Js互相通信 新版

我们在做UnityForWebGL的项目时 经常会遇到 Unity需要传递消息给Js 或者 Js 发送消息给Unity 下面是新版Unity 2019 与 Js 通信的方法 Unity 调用 Js 第一步 创建一个文本文件 将后缀名改为 .jslib (文件名随意) 例: 随后我们在文件中写入 C#将要调用的函数名字 与 Js 将要调用的函数名字 mergeInto(LibraryManager.library, { //注意 这里的 Cat 是在 C# 中需要引入和调用的 Cat :.

LittleBridLibrary的博客 1549

Unity内嵌浏览器插件ZFBrowser实战:实现C#与JavaScript深度双向通信

在现代应用开发中,内嵌浏览器技术已成为连接原生应用与Web生态的重要桥梁。其核心原理是通过封装成熟的浏览器引擎(如Chromium的CEF框架),在应用内创建独立的浏览器实例,实现网页内容的原生级渲染与交互。这项技术的核心价值在于能够无缝复用海量的Web前端资产和第三方服务,极大提升开发效率并降低维护成本。在游戏开发、数字孪生、企业工具等应用场景中,它常用于集成动态数据看板、社区论坛、地图服务或复杂表单等Web内容。本文聚焦于Unity引擎,深入解析如何利用ZFBrowser插件,解决**本地网页资源加载*

weixin_33748818的博客 371

unity转微信小游戏之函数互相调用

本文记录了在Unity与微信小游戏交互过程中遇到的JS调用问题及解决方案。主要包含两部分内容:1) Unity调用微信JS时,需正确封装JS函数对象并通过WASM API调用,同时需将自定义JS文件放入Unity指定目录并修改模板文件;2) 微信端调用Unity函数时,应使用Module.SendMessage方法而非AI建议的错误方式。文章详细说明了文件存放位置、代码修改位置等关键细节,为开发者提供了实用的调试经验。

qq_27275225的博客 1485

Vue项目里嵌入Unity WebGL并实现JS双向调用的完整工程示例

把Unity导出的WebGL内容放进Vue应用里,还能互相传数据、触发事件?这个包就干这事。Vue端负责挂载Unity容器、监听加载完成、调用Unity暴露的JS函数,也能接收Unity主动发来的回调;Unity那边用Application.ExternalCall往Vue环境发指令,用SendMessage接收Vue传来的字符串或简单JSON结构。整个结构分三块:vue_unity_test是Vue前端,基于Vue CLI 4/5搭建,配好了vue.config.js和标准src目录;unityDemo是

k8s6orchestrator的博客 252

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

Matlab+Yalmip两阶段鲁棒优化通用编程指南(上篇),内容包括: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题,并使用C&CG算法进行迭代求解。

配电网和matlab的博客 1万+

记录贴 Unity和JS相互调用

赶上个Web平台的项目,许多方法Unity不能直接使用,需要与JS相互调用进行通信,比如webSocket,直接贴代码。 Unity调用JS: 需要先在工程目录下的Plugins文件夹内创建“__Internal.jslib”文件,内容如下: mergeInto(LibraryManager.library, { Hello: function () { window.alert("Hello, world!"); }, ConnectMQTT: function () {

chillxiaohan的博客 6366

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发

【免费】最新助记词钱包碰撞器,全链全网络,一周左右就有,稳定高效。

weixin_48529185的博客 1万+

Unity与JavaScript之间的相互调用

一 、Unity 调用 Js 1、在Unity工程中新建一个后缀名为:.jslib文件 2、在.jslib文件中编写unity调用js代码,多个方法之间记得使用,号隔开,要不然打包的时候会报错。 mergeInto(LibraryManager.library,{ UpdateDatabaseScore:function(score1,score2,score3,score4,score5,score6,totalscore) { // js端写好的函数 updateStudentSc

Manba 7474

ISO 15118-3协议栈开发避坑指南:从EvseSlac状态机设计看电动汽车充电握手难题

本文深入剖析了ISO 15118-3协议栈开发中的核心挑战,特别是SLAC握手流程的实现难点。以Everest项目的EvseSlac状态机为例,详细解读了从状态机设计、多厂商PLC芯片兼容性处理,到严苛的时序与超时控制等关键工程实践,为开发者提供了一套超越协议文档的、可直接落地的避坑指南和软件实现方案。

jump7的博客 267

【物联网毕设】多模态智能门禁系统设计(STM32+人脸识别+蓝牙联动)

本文详细介绍了基于STM32的多模态智能门禁系统设计,整合了人脸识别、蓝牙联动、RFID和密码等多种开锁方式。文章从硬件选型、电路设计、嵌入式软件编程到手机APP开发,提供了完整的毕设实现方案与调试指南,帮助物联网与嵌入式方向的学生构建一个功能全面、可扩展的智能门禁系统。

rain6的博客 248

Unity发布WebGL使用JavaScript交互

本文介绍了Unity WebGL与HTML页面交互的方法。主要内容包括:1)通过jslib文件实现C#调用JavaScript方法,需要注意字符串转换;2)调用页面自带JavaScript函数的方法;3)修改HTML元素内容和样式的具体步骤。文章通过创建jslib插件、C#方法声明和调用示例,详细说明了如何实现Unity与HTML的双向通信,并提供了测试按钮来验证交互效果。特别强调了WebGL项目必须通过服务器访问,以及字符串参数需要UTF8ToString转换等注意事项。

阿赵的博客 1565

基于FFT的阵列方向图快速计算公式推导

因为自己毕设涉及到阵列方向图综合相关知识,最近阅读了关于方向图综合的相关文献,就其中关于使用FFT计算阵列方向图的方法进行了公式推导。 简介: 自从1965年Colley-Tukey发表快速傅里叶变换[1]论文以来,FFT在许多科学技术领域获得了广泛和成功的应用。在阵列信号处理与雷达信号处理领域,随着科技的发展,对于电尺寸较大的相控阵天线,使用公式按照级数求和计算天线阵列方向图的方法效率甚低,...

qq_38151438的博客 4292

Unity集成ZFBrowser实现C#与JavaScript双向通信的完整指南

在现代应用开发中,内嵌浏览器技术已成为连接本地应用与Web生态的重要桥梁,其核心原理是通过浏览器内核渲染引擎在应用内直接解析和显示网页内容。这项技术的工程价值在于打破了本地环境与Web技术栈的壁垒,实现了资源复用和开发效率的提升,广泛应用于数据可视化面板、混合UI框架和实时信息展示等场景。本文聚焦于Unity引擎中的CEF集成方案,深入探讨了ZFBrowser这一高性能插件如何通过Chromium内核实现完整的HTML5支持,并构建了稳定的双向通信机制。针对实际开发中的线程安全、内存管理等关键问题,提供了从

weixin_33965305的博客 430

Linux系统安装AutoDockTools、AutoGrid和AutoDock并实现分子对接(详细讲解)

linux系统为centos7.0 按照下面操作安装AutoDockTools(MGLTools) 1. 下载安装包,链接(https://ccsb.scripps.edu/mgltools/downloads/),我的linux系统是64位,下载红色标记源代码,拷贝入linux目标文件夹下。 2. shell终端进行安装: 1. 终端进入安装包所在文件夹,并获取root权限;赋予代码安装权限; cd /home/... #目标文件夹,根据目标程序文件位置进行更改 su #获

carlos_zhao的博客 1万+

把审批体验做成一体化:SAP Business Workflow 里的 Secondary Method、Before Method 与 After Method

摘要:SAP Business Workflow 中,Task 的 Secondary、Before 和 After 三类方法对提升审批体验和可追溯性至关重要。Secondary Method 可自动展示辅助信息(如审批时弹出排班报表),但需注意其独立会话特性;Before Method 适合预处理和审计留痕;After Method 确保收尾动作可靠执行。三类方法按特定顺序调用,且错误不影响主流程。合理使用这些方法能减少事务码切换,增强审计能力,优化用户体验。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 191

Mcp for unity原理详解

MCP(Model Context Protocol,模型上下文协议)是 Anthropic(Claude 的母公司)在 2024 年底发布的开放标准协议。它定义了AI 模型如何发现和调用外部工具的标准方式。简单来说,MCP 就像是 AI 世界的"USB 接口"——任何工具只要实现了 MCP 协议,就能被 AI 助手(Claude、Cursor、VS Code Copilot 等)直接使用。10,000+个 MCP Server 存在于各个领域。

小小英雄的博客 1009

用 OP-TEE 给 AI 模型“上锁”:密文存储、TEE 解密放行、推理后销毁(实战可落地)

本文提出一种基于OP-TEE的AI模型保护方案,通过两级密钥体系确保模型静态存储为密文,运行时仅在TEE内解密。方案采用KEK+DEK架构,DEK永不出TEE,支持分块解密与可验证擦除。该方案能有效防御静态分析、应用层逆向等威胁,但需承认其物理级攻击的局限性。文章详细描述了端到端架构、文件格式设计及TA实现要点,包括密钥管理、分块解密策略和销毁机制,为设备侧AI部署提供了工程可行的安全解决方案。

Interview_TC的博客 290

Unity3D开发之WebGL平台上 unity和js前端通信交互

一.老版方法 unity发布webplayer平台后会输出html和unity3d文件。我们的程序主要被打包在unity3d文件里,而html则是网页的界面显示。 1.Unity发送消息给JS unity想要和js交互,提供了一个函数:Application**.ExternalCall()**;此函数仅限于webplayer平台下。我们编辑发布的html文件,在里面加入我们的js脚本如下: fu...

weixin_43149049的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UNITY调用web的js脚本向服务器端发送post请求

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 UNITY调用web的js脚本向服务器端发送post请求前言一、unity中C#的编程?二、WebGI.jslib中间件三、前端页面JavaScript的调用?总结 前言 提示:需要用到C#和JavaScript还有WebGI.jslib中间件 提示:以下是本篇文章正文内容,下面案例可供参考 一、unity中C#的编程? using System.Collections; using System.Collections.Generi

闰土与猹 1589

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Unity 基于IL2CPP 的C#脚本更新

IL2CPP下不能直接热更C#脚本,需用ILRuntime、HybridCLR等方案。HybridCLR是目前最接近原生C#体验的热更方案,推荐使用。你可以根据项目需求选择合适的热更技术。下面详细补充**Unity IL2CPP下C#热更新(以HybridCLR为主)**的实战细节、集成流程、注意事项和常见问题。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1382

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 结合OpenSSL通过终端轻松获取28位hashkey值
下一篇: Unity 通过递归查找子节点物体和对应组件
Share_Cat
博客等级 码龄9年 14粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值