版本:Unity 6 (6000.0)
语言:英语
从 Unity C# 脚本调用 JavaScript 函数
从 Unity C# 脚本调用 C/C++/C# 函数

从 JavaScript 调用 Unity C# 脚本函数

您可能希望从 JavaScript 插件在 Unity 外部创建的用于在 Unity 中创建功能的一组代码。在 Unity 中可以使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。 更多信息
请参阅 词汇表
或浏览器代码调用部分 Unity 代码。例如,您可能需要 JavaScript UI(用户界面) 允许用户与应用程序交互。Unity 目前支持三个 UI 系统。 更多信息
请参阅 词汇表
元素,而该元素会触发 Unity 行为并需要访问该方法。

从浏览器的 JavaScript 向 Unity C# 脚本发送数据或通知的推荐方法是:使用 SendMessage 函数调用 Unity 项目中 游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、摄像机、路径点等。游戏对象的功能由附加到其上的组件定义。 更多信息
请参阅 词汇表
上的方法。

使用 SendMessage 帮助程序函数

在 JavaScript 代码中使用 SendMessage 方法调用 Unity 脚本 API 的 Unity 方法。

对可以传递的方法类型有一些限制。您只能调用 GameObject 方法,而不能调用附加到其他对象的通用 C# 方法。此外,仅当满足以下条件之一时才使用 SendMessage 调用方法

  • 该方法不采用任何参数。
  • 该方法有一个参数,并且该参数为单个字符串。
  • 该方法有一个参数,并且该参数为单个数字。

如果方法有多个参数或参数为其他类型,则不能使用 SendMessage 调用这些方法。

SendMessage 代码示例

要从嵌入在项目中的 JavaScript 插件进行调用,请使用以下代码

MyGameInstance.SendMessage(objectName, methodName, value);
  • objectName 为您的 场景一个场景包含着您游戏中的环境和菜单。将每个唯一的场景文件想象为一个独特的关卡。在每一个场景中,您放置您的环境、障碍和装饰,从而实质上分块设计和构建您的游戏。更多信息
    参见 词汇表
    中的一个对象的名称。
  • methodName 是当前附加到该对象中的脚本中的一个方法的名称。
  • value 可以是字符串、数字,或可以是空的。

以下代码是一个其他示例,可以展示您可以对具有不同参数的方法所调用的每种类型。

MyGameInstance.SendMessage('MyGameObject', 'MyFunction');
MyGameInstance.SendMessage('MyGameObject', 'MyFunction', 5);
MyGameInstance.SendMessage('MyGameObject', 'MyFunction', 'MyString');

要从嵌入页面的全局范围进行调用,请参阅 从全局范围调用 JavaScript 函数

其他资源

从 Unity C# 脚本调用 JavaScript 函数
从 Unity C# 脚本调用 C/C++/C# 函数