然后用VisualStudio/MonDevelop建立好工程, 添加引用, 就可以写脚本了. SWIG生成的包装类名和方法名都没变化, 用起来很爽....热更新
虽然.net也支持直接从代码转换成可以运行的东西, 但是这里还是参考Unity把脚本都编译成DLL
热更新的基本原理: 检测到脚本的DLL发生改变就重新载入
mono是以domain为单位load.../unload的, 所以要为脚本运行创建一个单独的domain
脚本的domain卸载前, dll是不可写的, 这是由于mono做了file mapping....解决办法有两个: 一是从内存加载, 二是先卸载再编译
加载后需要还原卸载前的对象状态, 这可以通过序列化来实现
C#的编译时间基本上可以忽略, 游戏运行时这边脚本一改, 卡个几帧就可以继续用新的脚本继续跑了...C#脚本实践(一)
C#脚本实践(二): Unity脚本机制分析