動態

詳情 返回 返回

用Vim玩玩MonoGame - 動態 詳情

前言(廢話)

最近想試試搗鼓下游戲,於是看了一圈遊戲引擎(差生文具多了屬於是)。早前我挺喜歡 godot的,但是這社區有點爛,下北澤一樣臭。那就還是 unity吧,不過 unity相對重一點,可能我有時就在辦公室搞點小玩意,unity還是留着在家裏玩好了;那麼,跟 unity一樣,也是用 C#的 MonoGame,就成了一個我在辦公室摸魚的時候可以用 vim寫寫代碼的小玩具了(我感覺做 unity還是上 Visual Studio比較實際?)。


1. Vim 插件

基本上 Vim上面的 C#插件,就是 Omnisharp-Vim了,按gayhub上的説明,直接在 vimrc里加上

Plug 'OmniSharp/omnisharp-vim'

然後

PlugInstall

就完事了。

2. .Net環境與 MonoGame

2.1 最省事的做法-VS大法

  1. 安裝 VS2019/VS2022,
  2. 安裝 .net桌面開發套裝
  3. 工具->管理擴展->搜索安裝 MonoGame extension

以下是新建一個MonoGame項目的流程, 假設你用的是 powershell(或者其它shell):

  1. 創建一個新的目錄作為項目根目錄 mkdir NewFolder
  2. 進入項目目錄 cd NewFolder
  3. 使用 MonoGame模板新建項目 dotnet new mgdesktopgl
    然後就會在 NewFolder下生成 .cs和 .csproj等項目文件。直接用 vs打開 .csproj運行一下,就是一個空白的窗口。

2.2 怨種做法

記述一下我一開始的操作,有緣人如果最後走通了,可以踢我一腳,指點一下
因為我一開始的想法是,能擺脱 VS工具鏈最好,這樣我在別的機器上部署,也可以省點工夫;所以如下面提到的,我是從 Massivesoft官網下的 .Net sdk,當然我的用來搗鼓的機器上也是裝了 VS2022的,不過只裝了C艹的工具。
基本按照MonoGame Tutorial來走:

  1. 直接上 massivesoft下載 .Net sdk, 安裝
    1.1 此時 dotnet應該會寫入環境變量裏了,在終端輸入 dotnet --info看看能不能找到,不能的話手動加一下
  2. 終端裏輸入 dotnet new install MonoGame.Templates.CSharp

順利的話,完成後面的 C#語言服務器安裝部分之後,就用 vim打開項目目錄,再打開 Game1.cs文件, omnisharp服務器就應該開始工作了
但是
當我第一次打開 Game1.cs文件,等了一會兒,沒啥動靜,於是

:OmniSharpOpenLog

看到它提示,omnisharp定位到了一個可用的VS,但是找不到可用的 .Net sdk,我試了添加 DOTNET_ROOT到環境變量裏也不行,合着有 VS的情況下,就認準它了?
一開始我是用 junction把 .Net安裝目錄(默認是 C:\Program Files\dotnet)鏈接到 VS的目錄下,但是似乎文件目錄對應不上,OmniSharp日誌裏還是各種錯;
然後我直接把 VS卸載了,再打開 Game1.cs(或者 Vim不關,用 :OmniSharpRestartServer也行),這回日誌裏直接寫找不到 MSBuild了。我查了一下,雖然.Net sdk本身就是帶 MSBuild的,但是要通過 dotnet來調用,本身沒有可執行文件。我試了在dotnet目錄下寫了個叫 MsBuild.bat的文件(裏面就是調 dotnet msbuild)去騙去偷吸,然而全被防出去了;
最後就沒轍了,老老實實用 VS Installer補上 .Net。

3. C#語言服務器

上面提到的 omnisharp-vim只是 omnisharp-rosly語言服務器在 Vim上的接頭人。按照 omnisharp-vim上的説明,你可以在 Vim的普通模式下輸入

:OmniSharpInstall v1.35.2 #或者什麼別的版本號

來安裝,但是我試了幾次,都不成功(國內網絡這一塊)所以我乾脆手動下載。找到對應平台的下載下來,放到你喜歡的目錄下,再把這個目錄放在環境變量 path裏就行。

3.1 坑

後面的朋友可能不會碰到,我之前搞完一套流程之後,omnisharp服務器死活讀不了項目,各種毛病
直到我使用

:OmniSharpOpenLog

日誌直到看到 #2676,然後下載了個 omnisharp-win-x64-net6.0 版本,就行了,wcnmd。

user avatar nao_67b4a1f8dcf9e 頭像
點贊 1 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.