一、创建dll文件
1。打开vs文件->新建->项目->C#->类库,输入项目的名称,创建一个dll项目
2。引入 UnityEngine UnityEditor 这两个文件放在unity安装目录的Unity\Editor\Data\Managed路径下,
具体添加步骤:右键点击解决方案->添加引用->浏览
3。如果加入了UnityEngine UnityEditor,在项目中就可以using UnityEngine 和 UnityEditor;如果项目中不需要,也可以省略第二步
举例说明:
using System
using System.Collections.Generic
using System.Linq
using System.Text
using UnityEngine
using UnityEditor
using System.Collections
namespace dlltest
{
class Class2 : MonoBehaviour
{
void Start()
{
Debug.Log("this is unity call C# dll test!")
}
}
}
5。F5启动生成解决方案(debug或者release),把生成的dll放到unity工程的asset下;
6。如果继承了Monobehaviour的类在dll的子对象中有显示,这样就可以绑定到GameObject上了,如果是要引用dll的类,需要using 命名空间,名字一般和项目名称一致才能调用。
首先需要跟大家说明的一点是,JS脚本必须放在"StandardAssets"、 "Pro StandardAssets“和"Plugins"这三个目录中的哪个都可以,原因是,这三个目录里的脚本被最先编译,"Editor"目录里的稍后编译,其他的脚本最后编译。如果在一
个目录下则CS文件无法读取JS里的方法,也就无法编译通过了。而JS调用CS方法则无此限制。
其次是,当你在CS脚本中获取JS脚本的时候,你写JS脚本名字的时候可能是不能被识别的(报红),不要害怕 - -,大胆的写下去吧,运行时是不会报错的
不要看到他红了就以为不能运行了,其实有的电脑是没有加载这个程序集,所以才这样的,想说的就这么多,大家顺利的调用JS吧~
JsScript.js
[csharp] view plain copy
function OnGUI()
{
if(GUI.Button(Rect(25,25,100,30),"JS Call CS" ))
{
var c = gameObject.GetComponent("test2")
c.PrintTest()
}
}
function testPrint()
{
print("CS Call JS")
}
Csharp.cs
[csharp] view plain copy
using UnityEngine
using System.Collections
public class test2: MonoBehaviour {
void OnGUI()
{
if(GUI.Button(new Rect(25,70,100,30), "CS Call JS"))
{
test1 c = (test1)gameObject.GetComponent("test1")
c.testPrint()
}
}
void PrintTest()
{
print("JS Call CS")
}
}