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, 可以参考一下

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

嵌入式数据库Perst

McObject2008年发布了其开源、面向对象嵌入式数据库系统的主要升级:Perst 3.0版本。使用全Java和全.NET版本Perst工作的开发人员都将从...

2205
来自专栏技术博客

aehyok.com的成长之路三——框架结构

aehyok.com的成长之路一——开篇 中主要阐述了自己为什么建立自己的网站,以及个人网站的大致方向。

944
来自专栏技术博客

win7 64位系统及开发环境重装后的总结

   话说来这家公司之后就一直使用这个系统,现在感觉这系统跑的实在是有点慢了,运行,调试各种浪费时间呀,不过也用了将近20个月了,这也可以说是我用的最久的一个系...

1256
来自专栏针针小站

【Soft】多语言的下载实用工具 – Nagisa

1364
来自专栏Golang语言社区

深入理解Wi-Fi P2P

本章主要内容: 介绍Wi-Fi P2P相关知识; 介绍Android中WifiP2pService、wpa_supplicant的相关代码。 7.1 概述 承...

4573
来自专栏智能大石头

XCode v9.6.2017.0830

新生命团队基础框架X组件,包括网络、数据库、安全、多线程、反射、序列化、模版引擎、服务代理、远程过程调用等模块,包括Mvc后台魔方、超级码神工具、消息队列等子系...

1570
来自专栏FreeBuf

第一只WiFi蠕虫的诞生:完整解析博通WiFi芯片Broadpwn漏洞(含EXP/POC)

过去的几个月里,Android 和 iOS 数十亿台设备中都曾出现过可怕的 WiFi 远程代码执行漏洞 BroadPwn。谷歌 7 月初发布了修复补丁,而苹果则...

5037
来自专栏张善友的专栏

.NET 4.5.1 预览版新特性

上个月的微软Build大会上宣布了.NET 4.5.1的推出,Heydarian的这个演讲题为“.NET开发中的新内容”,涵盖了.NET Framework中一...

1986
来自专栏逸鹏说道

专业上的常用的工具和类库集

Visual Studio 2013 扩展 CodeMaid: 可快速整理代码文件,清理不必要的代码和杂乱的格式。并在开发时实时提供代码复杂度的报告,以便帮助开...

3269
来自专栏木子昭的博客

<scapy>刺探星巴克无线网,记录顾客信息

上网除了需要IP, 还需要Mac地址, Mac与网卡绑定, 记录了设备的Mac, 相当于标记了设备使用者 关于Mac和IP的关系: <讲个故事>为什么IP地址...

3856

扫码关注云+社区

领取腾讯云代金券