1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Inkの紹介

Posted at

はじめに

2DのRPGを制作しようと勉強する中で、会話システム作成の解説動画を見たところInkと呼ばれる便利なスクリプト言語を使って作成していました。実際に使って見るとシンプルなテキストベースで使いやすいと思い、私自身の備忘録も兼ねて紹介いたします。

Inkとは

InkはInkyというIDEを使用してテキストベースで記述していくスクリプト言語です。会話の分岐など基本的な会話システムを実装したい時に便利な機能が備わっています。Inkで記述したものをUnityで使用する際には連携用プラグインの導入とC#での記述が必須となります。
Inkyの画面はこんな感じです。
スクリーンショット 2022-06-27 194352.png
特に設定も必要なく、会話にあたる文やコメントなどの部分は日本語で記述することができます。#で続く部分はTagsと呼ばれる機能でC#で個別に取得することができます。この辺については後ほど解説いたします。右側のスペースでは左側で実装した会話の流れを追うことができます。マウスで選択肢をクリックしたり、右上のアイコンで巻き戻したりすることができます。

InkyとInk Unity Integrationのダウンロード

まずは下記のサイトからInkyInk Unity Integrationダウンロードリンクをそれぞれクリックします。
https://www.inklestudios.com/ink/
InkyはGithubのページにアクセスするので、OS環境に応じてダウンロードしてください。私はWindowsなのでInky_windows_64.zipをダウンロードしました。
Ink Unity IntegrationはGithubかアセットストアからダウンロードする事ができます。私はGithubからダウンロードしましたがどちらかはお好みで。
ダウンロードしたらInkyを解凍し、Unityを開いてInk Unity Integrationをインポートしてください。
ImportInkPackage.png
インポートが終わりましたらInkの導入は完了です。

Inkの書き方

まずはInkでの書き方を解説していこうかと思います。
最初にProjectウィンドウで右クリックからCreate->InkをクリックしてInkファイルを生成します。
ファイル名を入力すると下の画像のように同じ名前のJSONファイルが生成されると思います。
スクリーンショット 2022-06-30 092655.png
このJSONファイルは簡単に言うとInkファイルの中身をUnityで扱えるようにJSON形式に変換したファイルとなります。Unity上ではこちらのファイルを使います。また、このファイルはInkファイルを更新すると自動的に反映されます。もし、反映されてなかった場合はProjectウィンドウで右クリックからRecompile Inkをクリックすれば問題ないかと思います。
Inkは基本的にダイアログで表示したい順に上から下に書いていく形になると思います。そのほかに様々な構文があります。今回は基礎的なものを順番に説明していきたいと思います。

Comments

まずはコメントです。///*~*/のおなじみ一行と複数行コメントアウトが使えます。そしてもう一つTODOコメントが使えます。書き方は、TODO:と書いてその後ろに書きたい内容を書きます。
スクリーンショット 2022-06-30 132105.png
TODOコメントを書いた状態で更新するとUnity上で下の画像ようになります。
スクリーンショット 2022-06-30 131431.png
スクリーンショット 2022-06-30 131639.png

Tags

文の後ろに#をつけることでTagsと呼ばれる機能を使うことができます。コメントと似ていますが、違う点としては文を読み込んだ際にその文の後ろに記述したTagsも同時に読み込まれ、C#string型で取得できるという点です。ちなみに文章も取得する際はstring型です。C#上では一文ずつ取得していくやり方がメインになると思うので、例えば一行ごとに名前のタグをつけて、ゲーム上で出力する際にTagsも同時に取得して名前を別の位置で表示させる、ような使い方ができます。また、Tagsは一文に複数使うことができるので、各Tagsをそれぞれ参照して、一つ目で名前を表示する、二つ目でメゾットを起動する、3つ目でGameObjectを有効/無効にする、というような使い方もできます。
スクリーンショット 2022-06-30 140129.png
UnityでTagsを使った簡単な実装については別の記事で紹介しようと思います。

Choices

文章の先頭にを付与することでその行を選択肢として実装することができます。それ以降に書かれた文章は分岐後の文として扱われます。複数選択肢を実装する場合は下の画像のように書きます。
スクリーンショット 2022-06-30 164123.png
また、選択肢の下の行でを一つ増やした選択肢を書く毎に分岐のさらに分岐を実装することが可能です。

*分岐1
   **分岐1-1
     ***分岐1-1-1
   **分岐1-2
*分岐2

選択肢をクリックすると次に読み込まれる文は選択肢の文となります。もし、選択肢の文を会話の文として読みこませたくない場合、選択肢の文を[ ]で囲むとその選択肢は読み込まれずスキップされます。
他の[ ]の使い方として、選択肢では短い文を表示し、選択後はそれに続くような文も追加して表示したい、といった場合は下の画像のように書きます。
スクリーンショット 2022-06-30 172141.png
下の画像は一番上の選択肢をクリックした後です。[ ]の部分が消え、それに続く文が追加で表示されているかと思います。
スクリーンショット 2022-06-30 172259.png

Knots

会話の文を各セクションごとに分けたい時などに使われます。書き方としては下記のようになります。

=== main ===

Knotsは三つのイコールの間にセクション名を書く形になりますが、書けるのは半角英数字とアンダーバーなどの一部の記号のみとなります。この機能を使うことで選択肢を再表示させることができます。下の画像でKnotsを使った例を書きます。
スクリーンショット 2022-06-30 182650.png
一行目は始めにmainのセクションを参照する文です。セクションを設定した場合、
->セクション名と記述しないと読み込まれません。その後各選択肢の最後に->セクション名が記述されているかと思います。一つ目の選択肢は->ENDとなっており11行目の->ENDスキップされ、現在のセクションから抜けることを示します。
二つ目の選択肢の->mainmainのセクションの最初まで戻ることを示します。これにより選択肢を再度表示することができます。一つ注意点として、見づらかったら申し訳ないのですが、二つ目の選択肢はではなくで記述しています。この違いは何かというと、で記述して元の選択肢に戻った場合、既に選択したものは表示されません。+で記述した場合は再度表示されます。

終わりに

今回はInkの基本的な部分の紹介となりました。別の記事でUnityでの簡単な実装を紹介してみたいと思います。
もし、この記事を見てInkに興味を持ちましたら下記のリンクやYoutubeなどで主に海外の方があげている解説動画などを見てみて学んでみていただけると嬉しいです。

参照

https://github.com/inkle/ink
https://github.com/videlais/learning-ink-unity

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?