太空工程师吧 关注:36,627贴子:507,107
  • 3回复贴,共1

讲一讲如何用vs写游戏内脚本

取消只看楼主收藏回复

新入坑。觉得这游戏的脚本真不错,自由度好高。有兴趣要好好研究一下
工欲善其事必先利其器,我们写脚本时如何用vs方便的代码补全和差错功能呢。本贴分享一下我今天的研究成果。
很惊讶这游戏竟然在github上有源码
https://github.com/KeenSoftwareHouse/SpaceEngineers
点击克隆和下载按钮,下载或者克隆源代码。这个源码比较老,很多api没有。所以食用时可能要配合其他的资料
我也不知道新的api哪里找。。。比如Runtime.UpdateFrequency,IMyRadioAntenna.TransmitMessage这些接口源码里就没有,wiki里也没有(有提到,但是没有Scripting_API_Documentation页系统的整理出来)。。十分想知道大佬们是怎么了解最新的api的
下载完成之后,用vs打开sln文件,也就是解决方案文件。打开后大概长这样


IP属地:四川1楼2018-12-29 03:31回复

    别管那个hello world。哈哈
    可以看到这个解决方案由很多项目构成。其中VRage是游戏引擎,不用管它。。。
    我们再打开类视图看一下

    发现我们能够在脚本里面用的接口都在一个叫Sandbox.Common项目下的Sandbox.ModAPI.Ingame里边


    IP属地:四川2楼2018-12-29 03:45
    回复
      那么,我们的Me,Runtime这些是哪来的呢,Main,Save函数又是如何被调用的呢?可以猜测,我们写的代码被封装在了一个类中,然后这个类继承了一个游戏中定义的类,Me,Runtime,main这些函数和属性都是继承而来的
      经过努力的搜索,我在源码中找到了这个类

      看见作者的注释,我们知道这就是要找的了


      IP属地:四川3楼2018-12-29 04:09
      回复
        结论,我们要在vs中写脚本,可以在se的解决方案中新建一个项目
        选c#类库,类的名字为Program,类的命名空间随意。
        添加引用Sandbox.Common和VRage.Game(如果不添加VRage.Game,在调用某些接口时vs会提示你添加上的)
        然后using Sandbox.ModAPI.Ingame;
        再让你的Program类从MyGridProgram类继承
        接着在类里面写想写的代码就可以了
        参考下面两张图




        IP属地:四川4楼2018-12-29 04:19
        回复