讲一讲如何用vs写游戏内脚本
太空工程师吧
全部回复
仅看楼主
level 3
530241314 楼主
新入坑。觉得这游戏的脚本真不错,自由度好高。有兴趣要好好研究一下
工欲善其事必先利其器,我们写脚本时如何用vs方便的代码补全和差错功能呢。本贴分享一下我今天的研究成果。
很惊讶这游戏竟然在github上有源码
https://github.com/KeenSoftwareHouse/SpaceEngineers
点击克隆和下载按钮,下载或者克隆源代码。这个源码比较老,很多api没有。所以食用时可能要配合其他的资料
我也不知道新的api哪里找。。。比如Runtime.UpdateFrequency,IMyRadioAntenna.TransmitMessage这些接口源码里就没有,wiki里也没有(有提到,但是没有Scripting_API_Documentation页系统的整理出来)。。十分想知道大佬们是怎么了解最新的api的
下载完成之后,用vs打开sln文件,也就是解决方案文件。打开后大概长这样
2018年12月28日 19点12分 1
level 3
530241314 楼主
别管那个hello world。哈哈
可以看到这个解决方案由很多项目构成。其中VRage是游戏引擎,不用管它。。。
我们再打开类视图看一下
发现我们能够在脚本里面用的接口都在一个叫Sandbox.Common项目下的Sandbox.ModAPI.Ingame里边
2018年12月28日 19点12分 2
level 3
530241314 楼主
那么,我们的Me,Runtime这些是哪来的呢,Main,Save函数又是如何被调用的呢?可以猜测,我们写的代码被封装在了一个类中,然后这个类继承了一个游戏中定义的类,Me,Runtime,main这些函数和属性都是继承而来的
经过努力的搜索,我在源码中找到了这个类
看见作者的注释,我们知道这就是要找的了
2018年12月28日 20点12分 3
level 3
530241314 楼主
结论,我们要在vs中写脚本,可以在se的解决方案中新建一个项目
选c#类库,类的名字为Program,类的命名空间随意。
添加引用Sandbox.Common和VRage.Game(如果不添加VRage.Game,在调用某些接口时vs会提示你添加上的)
然后using Sandbox.ModAPI.Ingame;
再让你的Program类从MyGridProgram类继承
接着在类里面写想写的代码就可以了
参考下面两张图
2018年12月28日 20点12分 4
level 9
应该是技术贴,顶顶[吐舌]
2018年12月29日 02点12分 5
level 7
开源的是陈旧的15年版本,如果只想引用相应的库以自动补全或反射的话,建立项目并且引用 SpaceEngineers\Bin64 下相应dll即可,无需如此麻烦,大部分模组/插件开发者也不是靠原力调试的。
2018年12月29日 04点12分 6
对哦
2018年12月29日 05点12分
大佬看起来是mod作者吧
2018年12月29日 05点12分
@530241314 谈不上大佬,模组/Torch插件/服务端部分都有涉猎,大部分是用在持续宇宙服务器中的。
2018年12月29日 05点12分
@贴吧用户_05JJ281 很好奇自己写的程序被不是自己写的程序(比如se)调用,这种情况该如何调试呢?虽然一时半会儿用不上,但是比较想知道
2018年12月29日 05点12分
level 5
编程功底要达到一定基础之后,才能玩转这个内容。我见到他们有舰队自动跟随的,做的非常好呢。@FlyBird925
2018年12月29日 07点12分 7
level 1
7楼精神病发作控制不住自己,大家谅解下[阴险]
2018年12月29日 07点12分 8
level 11
官方有个mdk的,直接装vs上就好了[哈哈]
2018年12月30日 18点12分 9
level 10
2019年01月07日 02点01分 10
1