Skip to content

fcscript/CSharpHotUpdate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unity3D hot update, support C++ or C#

** 简介 这是一个基于C++, C#简单语法的动态解释语言。目的在于提供一个简单高效,语法灵活的动态解释语言。 它专为游戏开发而生, 是为LUA的替换方案而生。

【Wiki】[https://github.com/fcscript/CSharpHotUpdate/wiki]

2019-7-11

完成单步调试,逐步调试,函数内跳转(运行至指定行),可以展开this, Class, List, map修改,可以轻松展开超过10万个以上的节点;

2019-8-11

完成Color32, Color, Rect, Ray等内置数据类型, 完成外部跨平台类的导入功能;

完成C#自动wrap的功能; 增加脚本中List, map与C#中List, Dictionary相互赋值的接口;

增加宿主平台语言与脚本对象数据交互的接口

2019-9-13

完成await异步方法

完成Unity插件导出异步方法

2019-9-22

解决new嵌套问题

增加内嵌struct的new操作符的支持

增加内嵌图形对象的参数构造函数

解决iterator模板的问题,兼容C#泛型写法

2019-9-29

增加JSON的支持

2019-10-06

重新实现对象引用机制,解决class与List, Map, Delegate, IEnumerator之间循环引用的释放的问题

修正StopCoroutine接口空指针崩溃的BUG

修正脚本与C#委托对象赋值不生效的BUG

修改C#导出插件,增加内嵌类的自动wrap

优化字节码文件格式,减少字节码文件与占用内存大小

2019-10-08

增加编译后,自动导出引用wrap类与接口配置的功能,用于发行时精简wrap接口

2019-12-07

增加手动注册wrap掊口的功能,可以将异步接口Task同步化,不使用真正的线程,简化逻辑

2019-12-08

增加脚本字节码加密功能

2019-12-09

修改导出插件,解决委托同参导出后重名的问题

2019-12-13

修改导出插件,修正动态库释放时崩溃的BUG,修正类全局函数没有加类名时,内部调用无效的BUG

2019-12-15

增加IntPtr支持,将脚本对象数据快速传递到宿主平台,让数据交互飞起

2019-12-20

修正脚本若干BUG,修正函数参数错误时编译不报错的BUG,增加Vector2, Vector3, Vector4的隐式转换

2020-07-19

增加Protobuf的支持,目前默认是Proto 3.0

FCSerialize 功能强化,增加读写定长数据的接口,增加PB相关接口

多变量声明支持, 如 int a, b = 3, c;

修正switch(exp), exp不支持复杂表达式的问题

修正class成员map, list的错误初始化导致运行时崩溃的问题

2020-09-05

修正对象赋空指令,空指针访问崩溃的BUG

2020-09-05

增加Protobuf的示例

修正 null == ptr 的编译错误

修改Protobuf的导出功能,修正一个接口导出的BUG

修改CSerialize名字为FCScriteze

2020-09-09

修正if(exp为常数)时的一个编译错误(笔误)

2020-09-13

修改导出插件,增加精简接口导出模式

优化for循环,测试用例大部分性能提升50%

修正一个引擎接口没有导出导致性能测试用例10异常的BUG

2020-09-15

修正class派生,基类名字没有导出,导致在Unity中访问不了的BUG

修正for优化后,就算条件不满足也会执行一次的BUG

增加脚本类成员函数的查询接口

2020-09-26

增加Unity重新编译脚本后的重置事件,解决Unity运行时重新编译后崩溃的BUG

2020-11-14

优化map的查询速度,基本上与LUA同等开销

增加小额内存池,解决脚本中大量小内存动态分配的开销(如动态字符串)

加快编译速度

2020-12-06

调整new操作符,解决部分new表达式的编译错误

增加Protobuf的反射属性,完成Protobuf的全反射读写

2021-01-01

修正协程中中断自己时,调用新协程会导致this指针为null的BUG

修正IOS工程的编译报错

增强工具的调试功能

2021-02-18

重构GC模块,彻底解决自引用,循环引用对象的GC问题

修正调试模块中map节点的显示的问题

优化调试模块,增加引用计数的显示

增加Mac下编译与运行时插件支持

2021-04-11

增加多态的支持,增加虚表

支持父类与派生类的相互转换

增加C#的base关键字支持

2021-04-14

修正Unity2019版本的导出插件错误

2021-04-16

修正Unity2020版本的导出插件错误

2021-04-18

修正Unity2020版本的导出插件错误

2021-04-24

增加Broadcast广播功能

修正C++ ::域名访问成员变量的问题

修正派生类同名变量覆盖无法正确访问的问题

目前同名覆盖变量通过base.变量名的访问部分地方有BUG,只能访问最后一个同名变量

2021-05-09

修正示例导出有部分接口没有导出的问题

修正static变量没有初始化的BUG

修正一些语法解析的问题

2021-05-16

增加List的{}初始化语法支持

优化编译,百万行脚本代码的编译时间优化到1秒以内

2021-05-30

修改虚拟机,增加多实例,多线程的支持

修正for循环条件中多if指令的BUG

增强Broadcast广播功能,增加获取广播类的功能

增加动态调用函数功能System.Call

2021-07-25

优化并增强String::Format,String::AppendFormat接口,支持格式化参数

2021-08-15

增加Excel表的支持,添加转表工具, libfclib_dll.so增加了16k

2021-08-18

修正Broadcast广播参数类型不一致时,没有自动转换的BUG

修正Format无符号整数会转成有符号数的BUG

2021-09-12

修正一个导出wrap接口的BUG

修改测试用例, 恢复到最初的版本,方便对比不同版本的性能

小幅度优化解释器,略微提升性能

2021-10-07

修正mac机器上Unity3D编译脚本会导致运行时崩溃的BUG,发现是在C++层后台线程调用C#回调接口导致

原因不明,尽管是加了锁,发现还是会崩溃, 改成主线程调用就好了, 问题函数GetResult,CompilerPrint

2022-02-28

删除一些冗余接口,优化了C#侧调用脚本的性能

修正一个Runtime时期,脚本对象为空指针时,访问成员变量崩溃的BUG

增加全反射访问接口

完成UE4插件

支持C++或C#侧的模板类,可以在脚本中使用宿主语言的模板类

2022-05-04

增加Proto与Json互转的功能

增强模板的语法解析,并修正一些语法解析错误

修正一个对象GC的BUG

2022-07-10

完成UE插件脚本与蓝图接口的互调功能,完成蓝图函数重载,脚本挂载功能,主体功能已经全部完成

2022-07-10

修正部分语法编译错误

增加命令行编译工具fc_cmd.exe

增加Wrap类二元操作符重载

增加map的初始化赋值

增加List,Map += 操作符,增加Clone接口

2022-07-31

修正UE插件的一个类型转换错误

修正脚本调用UE蓝图全局函数的一个崩溃

2022-08-07

增加字符串三个接口Match, MatchNext, ReadLine

优化字符串Append,缓存不足时改成倍增内存分配,解决巨量字符串连接的性能问题

增加C API桥接函数的导入声明的解析

2022-08-21

修正case非连值时, default分支跳转错误的BUG

修正for循环控制变量如果是函数引用参数时,没有输出引用的BUG

修正String的Match,MatchNext的BUG

修正单个字符常量与单个字符串常量相同时,编译函数匹配错误的BUG

2022-08-21

修正UE插件的一个属性访问崩溃

2023-12-10

增加struct支持,目前只支持基础类型,暂不支持函数

增加namespace支持

优化class内存占用,取消变量描述符

修正class成员访问表达式优化不生效的问题

修正虚拟机释放时,List,Map全局变量没有释放的问题

增加partial字段,支持分类

2024-03-16

UE插件强化,增加动态类型自动转换功能,增加内置struct对象