当前位置: 首页 > news >正文

C#脚本实践(一)

个人对脚本语言认识不深, 尤其是动态语言...

但是问了好多人为什么逻辑用脚本写, 答案都是不用编译

这也只能怪DT的C++当初没设计好

由于WOW的成功, 让lua几乎成了游戏脚本的标准

原来的python/ruby/tcl啥的一下子就没落了, 都怪暴雪啊~

虽然lua做为一个脚本语言来说, 非常的完美

但是我对它不是很感冒, 可能习惯了C系语言的语法了

对于C/C++/C#/Java/JS/AS类的我才看着比较顺眼

而且, 从学校开始, 好像自己就中了C#的毒一般, 虽然一直没机会大量应用, 但心中一直念念不忘

这也导致了我把引擎工具用WPF来开发的念头

今年Unity这个名字在眼前和耳边不断地飘过, 其理念非常不错

而它的脚本是基于Mono的, 冒似实际效果很不错

这也让我有了使用C#做为脚本的冲动

如果嫌C#不是动态语言的话, Mono还支持JavaScript和Boo

本来想如果不跨平台的话是不是可以直接使用MS的.Net实现

Google一下到是真有个叫CS-Script的实现, 不过想嵌入NativeC++看来不是那么好整

所以, 一切还是要从Mono下手, 虽然它的运行效率比MS的要打个折扣, 但再怎么说也是lua的好多倍

Mono在Windows下的编译不是很顺利, 因为官方的压缩包里的sln压根文件就不全

搜索也没什么头绪, 看来大家都是在linux下搞这玩意

后来从github上下载了最新的代码, 好不容易在修改了部分路径下的情况下编译通过

其中有些.lib是在mono的windows安装版本中的

Embedded Samples就是嵌入mono的示例程序

以teste为例, 运行时需要依赖mscorlib.dll, 而且那个路径很奇怪, 竟然是mono\msvc\Win32_Debug\lib\mono\2.0\

这个之后再搞懂怎么配置

test.cs载入之前要先编译成test.exe, 然后才能载入运行

这个可以看成是脚本的预编译,怎么直接载入文本执行呢? 这个待研究

P/Invoke方式的调用显然不实用, 要是能这样用还不如直接MS的.Net

另外一种脚本调用底层的方法是internal call, 大体看了下好像必须要在C#中再做一次extern声明

这个看看能不能做自动生成的, 要不然每次改动两边都要改多不爽

C++调脚本是通过Mono提供的一系列API来完成的, 如mono_runtime_invoke

另外有个类似luabind的库, 叫monobind, 可以参考一下

相关文章:

  • 【Python】excel
  • ASP.NET配置KindEditor文本编辑器 【转载】
  • 在Python中使用ArcObjects对象
  • C#脚本实践(二): Unity脚本机制分析
  • postgresql 数据库-密码修改
  • 解决linux oracle shell上下箭调用历史命令
  • 模板 BFS
  • 类加载器及其委托机制的深入分析
  • 《.NET 4.0面向对象编程漫谈》勘误表(2011年1月14日更新)
  • 【转】Android中的内存管理--不错不错,避免使用枚举类型
  • VisualSVN server安装及使用 转
  • Protobuf-net学习笔记
  • how to solve ORA-02293
  • (floyd+补集) poj 3275
  • 我大四了,oh,我要毕业了 _随笔
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [NodeJS] 关于Buffer
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 03Go 类型总结
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • es6要点
  • javascript 总结(常用工具类的封装)
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • oldjun 检测网站的经验
  • spark本地环境的搭建到运行第一个spark程序
  • use Google search engine
  • vue2.0项目引入element-ui
  • vue-cli3搭建项目
  • Web标准制定过程
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 闭包,sync使用细节
  • 计算机在识别图像时“看到”了什么?
  • 普通函数和构造函数的区别
  • 前端自动化解决方案
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何用vue打造一个移动端音乐播放器
  • 使用docker-compose进行多节点部署
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 学习HTTP相关知识笔记
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #pragma预处理命令
  • $.ajax()
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (LeetCode 49)Anagrams
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置