JSBinding+Bridge.NET:生成绑定(导出)

将框架代码导出到 JavaScript。就可以在 JavaScript 中调用 框架代码 的功能。

注意,这个功能是在 Js工程中做的,Cs工程没有这回事。

 

如何导出?

1. 将需要导出的类添加到 JSBindingSetting.classes 数组中,

2. 运行菜单 【JSB | Gen Bindings】 即可。

 

建议是把 UnityEngine.dll 的所有类全部写进去,一次性全部导出,以后就不需要再逐个添加了。

不过以后真正运用到项目中,可能需要各自维护,因为每个项目的需求可能不同。

 

3. 生成完成后,会生成3部分代码。

1) C# 代码,在文件夹 Assets\Scripts\JSBinding\G\ 下

2) 另一部分是JS代码,这部分代码都在这个文件里面:

Assets\StreamingAssets\JavaScript\Gen1.javascript

当 JS 引擎启动时会加载这个文件。

Gen1负责调用框架代码的功能。在Js代码中,所有需要调用到框架代码的,都必须经过Gen1。

3) 生成了一个 csw.cs文件到 Bridge工程中。关于这一点,可以参考:JSBinding+Bridge.Net:框架代码与逻辑代码的关系

 

4. Gen1是如何与C#通信的呢?

打开Gen1可以看到,所有函数的实现都是

return CS.Call(...);

CS.Call 是啥?CS.Call实际上对应的是C#代码 JSMgr.CSEntry 函数。在 JSMgr.InitJSEngine 函数中,把 JSMgr.CSEntry 函数传给了C++。然后在 C++中创建了Js中的CS对象以及函数Call,并把CS.Call 和 JSMgr.CSEntry绑定起来。所以在Js中调用CS.Call 实际上就会走到 C#中的 JSMgr.CSEntry 函数去。

 

返回:JSBinding+Bridge.NET:Unity游戏热更新方案

posted on 2017-01-04 09:58  AnswerWinner  阅读(563)  评论(0编辑  收藏  举报

导航