【Vket Cloud】動画つき！ゼロから始めるHeliScript超入門 - 用語集

# はじめに
Vket Cloudでは、「HeliScript」という独自のスクリプトを使用してコーディングを行うことで、ワールド内に高度なギミックを導入することが出来ます。

本記事では本連載記事にて登場する用語について紹介します。

少し長めですが、先の記事を読んで意味の分からない単語が出てきたらこの記事を見る、といった使い方をしていただければ、より理解が深まると思います。

# 用語集
本連載記事でしきりに登場する用語についての解説です。

## Sceneビュー・Hierarchyビュー・Projectビュー・Inspectorビュー
Unityのエディタ画面上にある4つのビューです。

![View.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788807/e69d1621-24cb-a11f-a181-32d49ffcc3b9.png)
### Sceneビュー
ワールド空間が表示されているスペースです。
空間上のオブジェクトを直接選択し、操作することが出来ます。

### Hierarchyビュー
ワールド空間上に設置されているオブジェクトの一覧が掲載されるスペースです。
ワールド空間に仕組みをもたらすプログラムだけが入ったオブジェクトや、他のオブジェクト群をまとめるフォルダのような役割を担う親オブジェクトといった、空間上で見えないオブジェクトについてもこちらに情報が記載されます。

### Projectビュー
プロジェクトフォルダの中身が表示されるスペースです。
プロジェクトフォルダのAssetsフォルダの中に入れることで、こちらのAssetsフォルダの中に表示されるようになります。

### Inspectorビュー
Sceneビュー、Hierarchyビュー、Projectビュー上で選択したオブジェクトやファイルについての詳細情報が表示されるスペースです。
ここでオブジェクトの位置を変更したり、オブジェクトに適用されるプログラムの種類を変えたりすることが出来ます。

また、Sceneビューの下にUnityでビルドして動作させた際の実際のゲーム画面情報が表示される、Gameビューがありますが、本連載記事では一切使用しないため、紹介を割愛させていただきます。

## Unityコンポーネント
Unity上でオブジェクトに機能を与えるための機能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788807/96c8b02f-1885-2151-b498-b601dbf74da6.png)

上記の画像は、Unity標準のCube(箱型オブジェクト)を選択した際のInspectorビューです。
Cubeの中には、

- 空間上での座標・回転・大きさを変更する**Transform**
- 空間上での見た目(骨組み)を定義する**Mesh Filter**
- 空間上での見た目(表面)を定義する**Mesh Renderer**
- 空間上で3次元の箱型の当たり判定を定義する**Box Collider**

の4つのUnityコンポーネントが入っています。

Vket Cloudの機能も「VKC Item ○○」という名前のUnityコンポーネントによって与えられます。
後々登場するHeliScriptのコンポーネントとは**全く別の概念なので**ご注意ください。

本連載記事では、Unityコンポーネントのことを`Unityコンポーネント`、HeliScriptのコンポーネントのことを`コンポーネント`と表現します。

## HeliScript
Vket Cloudでギミックを作成するのに使用する、専用のスクリプトです。
VketCloudSDKにはギミックの作成に使える「アクション」という機能がありますが、HeliScriptを使用することにより、アクション機能では作れない、高度なギミックを作ることが出来ます。

## 関数・コンポーネント・コンストラクタ・コメントアウト

HeliScriptの内部要素を紹介するにあたり、関数・コンポーネント・コンストラクタという要素があります。
また、プログラムの記載テクニックにコメントアウトというものがあります。

それぞれの紹介を行うにあたり、下記のスクリプト例を使用します。

```
1  component HeliScriptExample
2  {
3      public HeliScriptExample()
4      {
5          ShowHelloWorld();
6      }
7  
8      public void ShowHelloWorld()
9      {
10         // Hello World!をコンソールに出力
11         hsSystemWriteLine("Hello World!");
12     }
13 }
```

詳細説明は各記事に記載されているため、ここでは概念部分についておおまかに説明します。

### 関数

関数とは、何らかの操作を実行するコードの塊のようなものです。
`{`から`}`までが1つの関数になります。

上記の例では、8～12行目で`ShowHelloWorld()`という関数が作られており、
5行目で`ShowHelloWorld()`関数を使用しています。

まとまった操作を一度に行いたい場合、まとまった操作を関数にすることで、
関数の名前を呼び出すだけで行うことが可能になります。

また、関数を呼び出すことを「**発火**」と呼ぶこともあります。

### コンポーネント

コンポーネントとは、`component 名前{ }`で定義するHeliScriptの機能の塊のようなものです。
上記の例の場合、1行目から13行目まででひとつの`HeliScriptExample`という名前のコンポーネントになります。

Unity上の機能を指し示す「Unityコンポーネント」とは全くの別物なのでご注意ください。

### コンストラクタ

コンストラクタとは、コンポーネント初期状態を定義する部分で、
「Vket Cloudのワールドが立ち上がった時に一度だけ発生する動作」を指定する場所になります。
`{`から`}`までがコンストラクタになります。

上記の例だと3～6行目がこれに該当します。

:::note
**関数・コンポーネント・コンストラクタの関係性**

![ComponentFunction.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788807/bd0ed2bb-0a6f-8a5d-9e99-fc58a97b6f39.png)

コンポーネントの中にコンストラクタと関数が入っています。
コンストラクタは一番初めに実行され、以降は関数が動作します。
:::

### コメントアウト

コメントアウトとは、プログラムとして実行されない書き込みを行うテクニックです。
`//`の続きに書いてある文章、あるいは、`/*`と`*/`で囲まれた文章がこれに該当します。

上記の例だと10行目`// Hello World!をコンソールに出力`の部分がこれに該当します。

コメントアウトでプログラムがどのような操作をするものなのか解説を書き込むことで、
後から見返した際や他の人に見せる際、どのようにして動いているプログラムなのかが分かりやすくなります。

:::note
`/`(スラッシュ)は`.`キーの右隣を押すと入力できます。
:::

## コンソール
本連載記事におけるコンソールとは、デバッグモードを有効にした際、Vket Cloudのワールドの画面上部に出力される、文字列の最下部分(下画像の赤枠箇所)になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788807/58e50674-9608-5e4c-263c-038aec26db15.png)

HeliScriptでエラーが発生した際、コンソール上にエラーが表示されることがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788807/fdfcc8e2-83a4-d816-98c1-562ca2241bbf.png)
上記の場合、GetName()という関数(プログラム機能)がnull(存在しない)オブジェクトから使われた、というエラーが表示されています。

## 記号入力
用語ではありませんが、本連載記事で紹介するHeliScriptに使用した記号の入力方法一覧です。
いずれも一般的なキーボード、半角英数モードで入力を行います。

**`"`** : Shiftキー + `2`
**`%`** : Shiftキー + `5`
**`&`** : Shiftキー + `6`
**`(`** : Shiftキー + `8`
**`)`** : Shiftキー + `9`
**`=`** : Shiftキー + `-`(ハイフン)
**`|`** : Shiftキー + `￥`(BackSpaceキー左隣)
**`{`** : Shiftキー + `[`(Enterキー左隣)
**`}`** : Shiftキー + `]`(Enterキー左隣)
**`;`** : `L`キー右隣
**`:`** : `:`キー右隣
**`+`** : Shiftキー + `;`
**`*`** : Shiftキー + `:`
**`<`** : Shiftキー + `,`(`M`キー右隣)
**`>`** : Shiftキー + `.`(`.`キー右隣)
**`/`** : `.`キー右隣