1.js调用c#
[Configure]
public class ExamplesCfgujm
{
[Binding]
static IEnumerable<Type> Bindings
{
get
{
return new List<Type>()
{
typeof(UnityEngine.Debug),
typeof(UnityEngine.Vector3),
typeof(UnityEngine.SkinnedMeshRenderer),
typeof(UnityEngine.GameObject),
typeof(UnityEngine.Object),
typeof(GameUtils)
};
}
}
}
还记得Binding吗
在这里放入你的cs类
js那边就可以直接点出来调用啦
2.c#调用js
Main.jsEnv.UsingAction<int, int>();
var add = Main.jsEnv.Eval<Action<int, int>>(@"
const func1 = function(a,b) {
console.log(a+b);
};
func1;
");
add(3, 11);
Main.jsEnv.UsingFunc<int, int>();
var Add3 = Main.jsEnv.Eval<Func<int, int>>(@"
const func2 = function(a) {
return 3 + a;
};
func2;
");
UnityEngine.Debug.Log( Add3(1) );
如果是没有返回值的 就用UsingAction注册
有返回值就用UsingFunc
jsEnv.Eval 会返回最后一个表达式 ( 注意 eval里的代码不需要 return )
所以 js 相当于把自己的方法通过eval 传给了c#
然后c#调用了js里的方法
相当于绕了个弯