【Unity / PlayMaker入門】よく使われる変数の基礎から応用まで string型編

PlayMakerを使うとよく「String」というワードが出てきます。
これはPlayMakerで用いられる変数の型の一つで、PlayMakerを使う上で非常に重要なものです。
本記事ではそのstring型の変数について、実際にどのように応用されるかを紹介します。
また、本記事は以下の記事の続きになっています。

特に一つ目の記事では変数についてを基礎から説明しているので、変数を使うのが初めての方は一つ目の記事を先に読むことをお勧めします。

サンプルシーン

本記事を読めばPlayMakerを使って以下のようなシーンを制作することができます。

サンプルシーン

サンプルシーン

事前準備

UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。

はじめてPlayMakerを使用するひとは、あらかじめ以下の記事を一読することで、理解を深めることができます。

String編

Stringとは

stringとは文字列を値として一つだけ保持することができる変数の型です。

string型の変数のイメージ図

string型の変数のイメージ図

string型の変数を使うことで、シーンに配置されたテキストの内容や、シーンの内部処理で使う文字列などを動的に変更することができます。

また、string型の変数には最初は何も入っていません。

StringのAction

PlayMakerのstring型を使うActionの中でも特に重要なものを紹介します。

Set String Value

Set String Value

Set String Value

このアクションはString型の変数に文字列を代入することができます。

①代入先の変数を選択できます。

②代入する文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

③チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。

Get String Left / Get String Right

Get String Left / Get String Right

Get String Left / Get String Right

このアクションは、選択した文字列を左/右から設定した文字数分だけ切り取ることができます。

①切り取りたい文字列を変数で選択できます。

②切り取る文字数を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

③結果を保存する変数を選択できます。

④チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。

Get Substring

Get Substring

Get Substring

このアクションは、選択した文字列を指定した位置から設定した文字数分だけ切り取ることができます。

Get Substringの例

Get Substringの例

※上記の画像のように、文字列は左から0文字目、1文字目…とカウントされることに注意してください。

①切り取りたい文字列を変数で選択できます。

②何文字目から切り取り始めるか入力することができます。
また、入力欄の右のイコールを押すことで値を変数で選択することもできます。

③切り取る文字数を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

④結果を保存する変数を選択できます。

⑤チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。

Build String

Build String

Build String

このアクションは、複数の文字列を連結することができます。
また、連結した文字列の連結部分に他の文字列を挿入することもできます。

Build Stringの例

Build Stringの例

①連結する文字列の数を入力できます。

②連結する文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

③文字列の連結部分に挿入したい文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

④チェックを入れると、連結した文字列の最後尾にも③の文字列を付け加えます。

⑤結果を保存する変数を選択できます。

⑥チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。

String Append

String Append

String Append

このアクションは、選択した文字列の後ろに、文字列を結合することができます。

①結合される文字列を変数で選択できます。

②後ろに結合する文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

String Replace

String Replace

String Replace

このアクションは、選択した文字列のうち、特定の文字列を他の文字列に置き換えることができます。

String Replaceの例

String Replaceの例

①置き換えを実行する全体の文字列を変数で選択できます。

②置き換えたい特定の文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

③置き換え後の文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

④結果を保存する変数を選択できます。

⑤チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。

String Split

String Split

String Split

このアクションは、文字列を指定した文字ごとに分割して、文字列の配列に格納することができます。

String Splitの例

String Splitの例

①分割したい文字列を変数で選択することができます。

②どの文字ごとに分割するか入力することができます。
※文字列を入力した場合、その文字列に含まれるすべての文字ごとに分割されます。

③分割後の各文字列の先頭と末尾の空白文字(スペース)をすべて削除します。

④③で削除される文字を、空白文字以外に変更できます。
※文字列を入力した場合、その文字列に含まれるすべての文字が③で削除される文字に変更されます。

⑤結果を保存する配列を選択できます。

Array Get
Array Get

Array Get

このアクションは、配列の中から一つのデータを取り出すことができます。

これを使うことで、分割後の文字列をString変数に保存することができます。

①配列を選択できます。

②配列の何番目のデータを取り出すかを入力できます。
※配列内のデータは0番目、1番目…とカウントされることに注意してください。

③結果を保存する変数を選択できます。

④チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。

⑤②で配列の範囲外を入力している場合に発生するイベントを選択できます。

String Join

String Join

String Join

このアクションは、文字列の配列を一つの文字列へ連結することができます。
また、連結した文字列の連結部分に他の文字列を挿入することもできます。

String Joinの例

String Joinの例

①文字列の配列を選択できます。

②文字列の連結部分に挿入したい文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

③結果を保存する変数を選択できます。

Select Random String

Select Random String

Select Random String

このアクションは、自分で設定したいくつかの文字列から、ランダムに一つの文字列を変数に代入することができます。

①文字列の数を入力することができます。
※ここに入力した数に対応して②と③の組み合わせの数が決まります。

②文字列を入力できます。
また、入力欄の右のイコールを押すことで文字列を変数で選択することもできます。

③0~1でその文字列がランダムに選ばれる確率の重みを入力できます。
また、入力欄の右のイコールを押すことで値を変数で選択することもできます。

④結果を保存する変数を選択できます。

Stringの応用

String型の変数を使うことで、文字列が動的に変動するギミックを作ることができます。

今回はその例として、1秒ごとに文字列に”BA”または”NA”が等しい確率で追加されていき、文字列中に”BANANA”が完成したときにバナナが空から降ってくるギミックを作ります。

サンプルシーン作成

最初に、バナナの3DモデルをUnityで開いて、プレハブ化しておきます。

※バナナの3Dモデルが用意できなければ、Capsuleなどをプレハブ化したものでも代用できます。

空のオブジェクトを一つと、Canvasを一つと、Canvas上にtextを一つ作ります。

作った空のオブジェクトを、原点座標(0,0,0)の少し上くらいに移動します。

Inspectorから、作ったCanvasのRender Modeを「World Space」に変更して、textがなるべく原点座標(0,0,0)の近くになるように大きさ・位置を調節します。

CanvasのRender ModeをWorld Spaceに変更

CanvasのRender ModeをWorld Spaceに変更

作った空のオブジェクトに、PlayMakerFSMを追加します。

空のオブジェクトにPlayMakerFSMを追加

空のオブジェクトにPlayMakerFSMを追加

Action Browserを開いて、State1に「Random Event」を追加します。

EventsタブのAdd Eventから、新しいイベントとして「BA」と「NA」を追加します。

新しいイベントとして「BA」と「NA」を追加

新しいイベントとして「BA」と「NA」を追加

State1のTransitionに、BAとNAを追加します。

State1のTransitionにBAとNAを追加

State1のTransitionにBAとNAを追加

新しいStateとして「”BA”」を作ります。

新しいStateとして「"BA"」を作成

新しいStateとして「”BA”」を作成

Action Browserを開いて、”BA”に「Random Event」と「String Append」と「UI Text Set Text」を以下の画像の順通りに追加します。

"BA"にアクションを追加

“BA”にアクションを追加

Random EventのDelayに、「1」を入力します。

新しい変数「banana」を作成して、String AppendのString Variableに設定します。

UI Text Set TextのGame ObjectをSpecify Game Objectに変更し、対象にTextを設定します。

UI Text Set TextのTextに、変数bananaを設定します。

"BA"のアクションを編集

“BA”のアクションを編集

“BA”のTransitionに、BAとNAを追加します。

“BA”を3つ複製して、以下の画像のように名前を変更し、Transitionを接続します。

名前を変更("BA" → "NA", "BANA", "BANANA")+Transitionを接続

名前を変更(“BA” → “NA”, “BANA”, “BANANA”)+Transitionを接続

“BA”のString AppendのAppend Stringに「BA」を入力します。

“NA”、”BANA”のString AppendのAppend Stringに「NA」を入力します。

“BANANA”のString AppendのAppend Stringに「NA1」を入力します。

Action Browserを開いて、”BANANA”に「String Replace」と「Create Object」を以下の画像の順通りに追加します。

"BANANA"にアクションを追加

“BANANA”にアクションを追加

String ReplaceのString VariableとStore Resultに、変数bananaを設定します。

String ReplaceのReplaceに、「BANANA1」を入力します。

String ReplaceのWithに、「<color=yellow>BANANA!</color>」を入力します。

Create ObjectのGame Objectに、最初に作ったバナナのプレハブを設定します。

Create ObjectのSpawn Pointに、最初に作った空のオブジェクトを設定します。

"BANANA"のアクションを編集

“BANANA”のアクションを編集

以上で完成です。

実際に完成したものはこのように動きます。

実際の動作

実際の動作

終わりに

本記事ではstring型の変数の基本と応用を説明しました。

今回紹介したように、PlayMakerを使えばUnityで使用するプログラミング言語(C#)を学習しなくても、Unityコンテンツを簡単に作成できます。

今回紹介した応用以外にも、PlayMakerで変数を使いこなせばさまざまなことを表現できるので、皆さんもぜひPlayMakerを使ったシーン制作に挑戦してみてください。

STYLYにアップロードする方法

3DモデルをSTYLYにアップロードしてみましょう。

STYLYアカウントを作成する

アカウント作成方法

STYLY アカウント作成の流れ
STYLY アカウント作成の流れ
 
 

STYLYにアップロードする方法

取り込めるアセットを理解しよう
取り込めるアセットを理解しよう
 
 

UnityからSTYLYにアップロードする方法

UnityからSTYLYにプレハブとシーンをアップロードする方法
UnityからSTYLYにプレハブとシーンをアップロードする方法
 
 

STYLYに関する質問、バグ報告、改善してほしい要望はSTYLY FORUMまで
https://jp.forum.styly.cc/support/discussions

Certified by (QA) : Shota Shawn Yoshizawa
Edited by : SASAnishiki