HeliScriptでもコーディング支援を受ける方法

# 概要
vs code上でC#を使うときには「コード補完」「定義にジャンプ」など様々なコーディング支援を受けることが可能です。
一方、HeliScriptにはそのような環境がまだありません。

そこで、当記事ではHeliScriptコードをC#として強引に認識させることで、HeliScriptでも支援を受ける方法を紹介します。

# 何ができるようになるか
下記以外にもC#だと出来るようなことが出来るようになります
### コード補完
![スクリーンショット 2024-05-16 182517-20240516-092517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14345/dd0fedce-d8be-4ce0-8f6f-53fa334f3105.png)
- . を打った時点で候補がでます
- メソッドを覚えてなくてもオプションから選ぶだけで良くなります
- 独自クラスだけでなく、Itemなど既存クラスの補完もできるようにしてます
### GoToDefinition
- F12などで定義にジャンプします
- メソッドから処理の流れを追いやすくなります
- ファイルをまたぐ移動も可能です
### 参照
クラス間メソッド間の関係がわかりやすくなります
### アウトラインの表示
どんなクラスか一目でわかるようになります
![fce6b4bd-819f-407d-b2b6-4eae999bad57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14345/8f539847-aa28-4904-a67d-e0ae0dd0a479.png)
### ホバーガイドの表示
定義に飛ばずともその場で詳細を把握できます
### 変数名など識別子の一括変更
識別子を選択してF2ボタンから変数名を修正することで、全ファイルの変数名が一発で更新されます。リファクタリング時に必須機能といえます。

# 手順
基本的には.csprojファイルを作成して、settings.jsonを編集するだけで一連のコーディング支援が受けられます。

:::note info
**動作環境**
- ターミナルで`dotnet --version` を実行しログがでる
    - でない場合、[vs code向け.NET SDK](https://dotnet.microsoft.com/ja-jp/download/dotnet/sdk-for-vs-code?utm_source=vs-code&amp;utm_medium=referral&amp;utm_campaign=sdk-install)をPCにインストールしてください
- VSCodeに[C#拡張機能](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp)がインストールしてある
:::

## 1. .csprojを作成し編集する
ターミナルでUnityレポジトリのルートに移動し下記コマンドを実行する。
```shell
dotnet new console --output . && rm Program.cs
```

csprojがレポジトリルートに作成されるので、下記のようにItemGroupに.hsまでの相対パスを追記してください。
```html
<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <Compile Include="Assets\**\*.hs" />
    <Compile Include="release\**\*.hs" />
  </ItemGroup>
```

:::note warn
**Unity Editorにcsprojを自動生成させない**
External toolsのエディタ参照で、vs code や vsをターゲットにしてしまうとAssembly-CSharp.csprojなどが自動生成されてしまいます。作成したcsprojファイルと競合するため、メモ帳などターゲットにしておくといいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14345/4d0f9031-1da9-49f5-b4b5-6fc5a54446ac.png)

既に生成済みの場合は下記ファイルを手動で削除してください。
Assembly-CSharp.csproj、Assembly-CSharp-Editor.csproj、[プロジェクト名].sln
:::


## 2.settings.jsonの編集
レポジトリルートに.vscode/settings.jsonがなければ作成し、settings.jsonに下記を追加してください。
```json
{
    "dotnet.server.useOmnisharp": false,
    "files.associations": {
        "*.hs": "csharp"
    },
    "editor.tokenColorCustomizations": {
        "textMateRules": [
            {
                "scope": "entity.name.type",
                "settings": {
                    "foreground": "#569cd6"
                }
            }
        ]
    },
    "workbench.colorCustomizations": { 
      "editorError.foreground": "#212121", 
      "editorWarning.foreground": "#212121", 
      "editorOverviewRuler.errorForeground": "#212121", 
      "list.errorForeground": "#dfdfdf", 
      "list.warningForeground": "#dfdfdf"
    }
}
```
## (3. CodeCompletionフォルダの配置）
下記GithubからCodeCompletionフォルダを取得し、フォルダごとレポジトリのルートに置いてください。
VKCメソッドのサジェストしてくれるようになります。
https://github.com/umezy/VketCloudAutomationTools/tree/main

# トラブルシューティング
### コード支援されない
C# 拡張機能を一度削除し、再インストールすると治ることがあります

### エディタ立ち上げ時のポップアップエラー
「esc」を押せば消えます。xボタンを押すよりは楽に消せます。
![スクリーンショット 2024-05-17 120735-20240517-030735 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14345/2b960cf5-8a02-40eb-b75e-77e84db4f099.png)

### componentクラス内でコード補完されない
componentキーワードをclassキーワードに変換するとコード補完されるようになります