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

> Call functions from your Unity project in your JavaScript plug-in or browser.

您可能希望从 JavaScript 插件或浏览器代码中调用部分 Unity 代码。例如，您可能需要一个触发 Unity 行为并需要访问该方法的 JavaScript UI 元素。

从浏览器的 JavaScript 向 Unity C# 脚本发送数据或通知的建议方法是使用 `SendMessage` 函数调用 Unity 项目中游戏对象上的方法。

## 使用 SendMessage helper 函数##use-the-sendmessage-helper-function

使用 `SendMessage` 从 JavaScript 代码调用 Unity 脚本 API 的 Unity 方法。

对于可以传递的方法类型存在一些限制。只能调用游戏对象的方法，而不能调用附加到其他对象的常规 C# 方法。此外，仅当以下条件之一为 true 时，才使用 `SendMessage` 调用方法：

* 该方法不接受任何参数。
* 方法有一个参数，且该参数是单个字符串。
* 方法有一个参数，且该参数是单个数字。

无法使用 `SendMessage` 调用具有多个参数或具有其他类型参数的方法。

## SendMessage 代码示例##example-sendmessage-code

要从嵌入在项目中的 JavaScript 插件执行调用，可使用以下代码：

```js
MyGameInstance.SendMessage(objectName, methodName, value);
```

* `objectName` 是场景中对象的名称。
* `methodName` 是脚本中方法的名称，当前附加到该对象。
* `value` 可以是字符串、数字，也可以为空。

以下代码是另一个示例，显示了可以使用不同参数调用的每种类型的方法。

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

要从嵌入页面的全局作用域执行调用，请参阅[从全局作用域调用 JavaScript 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md#global-scope)。

## 其他资源##additional-resources

* [与浏览器脚本交互](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting.md)

* [设置 JavaScript 插件](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js.md)

* [从 Unity C# 脚本调用 JavaScript 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md)

* [从 Unity C# 脚本调用 C/C++/C# 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browsers-c-to-unity.md)

* [在 Unity C#、JavaScript 和 C/C++/C# 代码之间创建回调](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-example.md)
