Unity3D: JavaScript->C# 或 C#->JavaScript的调用
在进行Unity3D编程时,有时我们需要访问使用不同编程语言编写的脚本。虽然建议将所有脚本统一为一种语言,但了解如何在JavaScript类中访问C#脚本,以及在C#脚本中访问JavaScript脚本是很有必要的。
脚本放置要求
首先,需要将脚本放置在项目的正确目录中。你要访问的脚本必须放在Standard Assets
或者Plugins
目录下,而其他脚本则放在这些目录之外。这是因为这些目录中的脚本会首先被编译,意味着它们不能访问外部尚未编译的脚本。
从JavaScript调用C#脚本
完成脚本的放置后,就可以像调用其他组件一样使用GetComponent()
方法。以下是一个JavaScript的示例代码:
// 创建一个变量以访问C#脚本
private var csScript : CSharp1;
function Awake()
{
// 获取C#脚本组件
csScript = this.GetComponent("CSharp1");
// 注意:需要将 'CSharp1' 文件放在 'Standard Assets' 文件夹内
}
// ...
从C#调用JavaScript脚本
下面是一个从C#脚本调用JavaScript脚本的示例:
using UnityEngine;
using System.Collections;
public class CSharp2 : MonoBehaviour
{
// 创建一个变量以访问JavaScript脚本
private JS1 jsScript;
void Awake()
{
// 获取JavaScript组件
jsScript = this.GetComponent<JS1>();
// 注意:需要将 'JS1' 文件放在 'Standard Assets' 文件夹内
}
// ...
}
总结
以上就是在Unity3D中实现JavaScript与C#脚本相互调用的方法。由于脚本编译顺序的限制,无法同时让C#和JavaScript脚本相互直接访问,必须有一个脚本放在Standard Assets
或者Plugins
目录下。