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 ...
随机推荐
- [SoapUI] Post请求Body里面限制特殊字符(&、%),Groovy脚本里特殊字符需要添加“\”转义($)。
SoapUI的Post请求,在body里面不能包含(&.%),如果含有这些特殊字符,请求会报错:在添加的Groovy脚本里有些特殊字符需要使用“\”转义($),不然也会报错.
- 运行Python脚本的方法
1.安装完Python后,添加环境变量---在系统变量中找到Path ,点击编辑把你的python安装目录放到里面,注意环境变量之间用";"隔开.打开CMD,在CMD命令行中,输入 ...
- 【转】XGBoost参数调优完全指南(附Python代码)
xgboost入门非常经典的材料,虽然读起来比较吃力,但是会有很大的帮助: 英文原文链接:https://www.analyticsvidhya.com/blog/2016/03/complete-g ...
- csu 1809 Parenthesis
题目见此 分析,把'('当成1, ')'当成-1, 计算前缀和sum. 记交换括号左边的序号为u, 右边为v,讨论左右括号: 1.s[u] == '(' && s[v] == ')' ...
- 关于strcpy和memcpy
strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符.已知strcpy函 ...
- C# 自动运行代码 (创建windows 服务的形式 )
本文转载自:http://blog.csdn.net/csethcrm/article/details/17917721 1. 新建项目 1.1 右键解决方案 – 添加 – 新建项目 1.2 ...
- EverEdit安装
- 把DataTable中的数据拼接成XML时遇到的问题
错误信息:System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Serve ...
- iOS开发UI篇—字典转模型
iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 // // LFViewController.m // 03-应用管理 // // Creat ...
- DeepLearning之路(三)MLP
DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解 @author:wepon @blog:http://blog.csdn.net/u012162613/articl ...