JSBinding + SharpKit / 编译 Cs 成 Js
轻轻一点菜单:【JSB | Compile Cs to Js】
主要产出:StreamingAssets/JavaScript/SharpkitGeneratedFiles.javascript,你的所有逻辑代码都在这里
其他产出:
Temp/AllInvocations.txt:记录所有逻辑代码对框架代码的调用 (1)
Temp/AllInvocationsWithLocation.txt:同上,但同时记录每个调用的文件名和行号 (2)
Temp/YieldReturnTypes.txt:记录逻辑代码中,所有使用 yield return 后面接的对象的类型 (3)
(1) 没啥用,就是用来看的
(2) 有用,用于后续步骤检查每个调用是否有效。这个能检查90%的情况。如果这个显示 0 errors,基本能跑。但仍然有可能运行时还会报错,毕竟 Cs 和 Js 存在着众多差异。总的来说,有了这个检查,就放心多了。
(3) 有用,跟 (2) 类似的作用。由于 MonoBehaviour 协程是在 Js 手写实现推动的 (因为转换成 Js 后, Unity不可能再推动你的协程),并不支持全部的 yield return 对象类型。目前这个文件只是用查看,暂时没有做检查。如果想深入了解要去看 StreamingAssets/JavaScript/Manual/UnityEngine_MonoBehaviour.javascript。
-------------------------------------------------------------------
传递给skc5.exe的编译符号,可以在 Compiler.cs 里找到。可以注意到,符号包含 UNITY_EDITOR,这里解释一下为什么。首先,Js里是通过给函数加后缀的方式区分重载函数的,比如说有一个类
1 class A
2 {
3 public void f(int i){}
4 public void f(string s){}
5 }
生成的Js函数名分别是
1 f$$Int32
2 f$$String
当你运行 【JSB | Generate JS and CS Bindings】时,代码是在编辑器下执行的,所以当时肯定有定义 UNITY_EDITOR。我们把A的定义改一下:
class A
{
#if UNITY_EDITOR
public void f(int i){}
#endif
public void f(string s){}
}
生成的这2个函数的名字还是
f$$Int32
f$$String
如果 Js 编译器没有定义 UNITY_EDITOR,当你调用 a.f("") 时,他生成的 Js 代码是
a.f("") // 没有后缀,调用失败!
因为他以为 f 这个函数是没有重载的,所以不会给他加后缀。结果就是调用失败!
这种情况目前不知道是否存在,反正是有一定的风险的~!
返回:Unity代码热更新方案 JSBinding + SharpKit 首页
JSBinding + SharpKit / 编译 Cs 成 Js的更多相关文章
- weex 编译vue成js
cd 项目 1.开发 npm run web 开发过程中可以直接使用浏览器运行 npm run ios 2.打包 npm run build 会在 dist 文件夹 中生成js文件, 即可拖入ios ...
- JSBinding+SharpKit / MonoBehaviour替换成JSComponent原理
Unity 是基于组件式的开发,gameObject 身上可以绑定任意个脚本.每个脚本组成 gameObject 的一个部分. 脚本里通过添加预定义好的函数来执行自己的任务.比如Awake,用于初始化 ...
- JSBinding + SharpKit / 使用 Firefox 调试 JS
已经准备好,google打不开,等打开了再贴图上来
- JSBinding+SharpKit / 菜单介绍
- Unity代码热更新方案 JSBinding + SharpKit 首页
目前Unity的代码更新方案有很多,主要以lua为主. JSBinding + SharpKit 是一种新的技术,他做了两件事情: JSBinding将C#导出到 JavaScript (引擎是 Mo ...
- Emscripten编译环境搭建--将C和C++编译成JS
Emscripten编译环境搭建--将C和C++编译成JS 需求:linux环境下用js执行c.c++文件,使用emscirpten编译器 目标:搭建好Emscripten环境 环境:Ubuntu16 ...
- 安装 TypeScript 并编译成JS
官网: https://github.com/microsoft/TypeScript TypeScript是一种由微软开发的开源.跨平台的编程语言.它是JavaScript的超集,最终会被编译为Ja ...
- JSBinding + SharpKit / 实战:转换 Survival Shooter
从 asset store 下载 Survival Shooter (商店里有2个版本,一种是给Unity5用的,一个是给Unity4.6用的,我们这个实验用的是后者,版本是2.2.如果) 1 删除多 ...
- JSBinding + SharpKit / 实战:转换 2DPlatformer
最后修改:2015年07月29日 2016年2月25日 2DPlatformer 是 Unity3D 的一个官方 Demo.本文将介绍使用 JSBinging + SharpKit 转换 2DPlat ...
随机推荐
- keyup与setInterval
<html><body> <input type="text" id="clock" size="35" /& ...
- window.location.href 失效的解决办法
第一种:在window.location.href 后面加上 window.event.returnValue = false; 如: <a href="#" onclick ...
- MFC编程入门之十二(对话框:非模态对话框的创建及显示)
上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 非模态对话框显示后,程序其他窗口仍然能正常运行,可以响应用户输入,还可以相互切换.上一讲中创建的Tip模态对话框 ...
- c++虚函数的作用是什么?
<深入浅出MFC>中形容虚函数是执行一般化操作,一直没有领悟要点.现在的体悟是抽象,先前考虑问题都是由抽象到具象,比如下文中的示例,由上(虚基类的「怪物」)至下(派生类的三个子类「狼」「蜘 ...
- 登陆界面Login
最终界面: XMAL 代码: <Grid > <Grid.RowDefinitions> <RowDefinition /> <RowDefinition ...
- guava学习--Supplier Suppliers
转载:http://www.cnblogs.com/jun-ma/p/4850591.html Guava Suppliers的主要功能是创建包裹的单例对象,通过get方法可以获取对象的值.每次获取的 ...
- html中input文本框,初始里边有文字提示,当点击时,文字消失,怎么设置?
使用onfocus事件检查当前值,如果是默认值,就将value属性置空.如:<input type="text" value="请输入内容" onfocu ...
- start with connect by prior 递归查询用法
这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: create table a_test ( parentid ), sub ...
- MVC、ORM、CURD、ActiveRecord、单一入口的概念
MVC MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务. 视图 :视图是用户看到并 ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...