はじめに
Unity のプログラミングで使用される C# のデータ型には様々な種類があります。 今回はそのデータ型の中から string (ストリング)型を紹介します。
string 型
C# の string 型は、文字列を表すためのデータ型です。 文字列とは、複数の文字を連結したもので、テキストデータの表現に使用されます。
string 型の用途
ここでは string 型の主な使用用途を提示します。
1.プレイヤー名、アイテム名、キャラクター名などの文字列の管理
プレイヤー名、アイテムの名前、キャラクター名などは文字列で表現できますので、 こういった情報は、string型の変数に格納して管理することが出来ます。
2.テキストメッセージやダイアログなどの文字列の管理
ゲーム中にテキストメッセージやダイアログを表示する場合、表示させたい文字列を string型の変数に格納して管理することが出来ます。 他にもアイテムやスキルなどの説明文なども管理できます。
3.外部ファイルからのデータの読み込み
ゲーム内で利用するテキストデータや設定データなどを外部ファイルから読み込む場合には、string型の変数を使ってデータを格納します。 例えば、ゲーム内で利用する言語データを外部ファイルから読み込む場合などがあります。
これら以外にも、ゲームにおけるstring型の用途は様々です。 string型は文字列を扱うための型であり、ゲーム開発において欠かせないものの一つです。
string 型の変数の宣言
string 型の変数は、以下のように宣言します。
string myString;
これにより、 myString という名前の変数が宣言され、初期値は null(ヌル) になります。 null は、何も値がないことを示します。
変数に値を代入するには、以下のように文字列リテラル(ダブルクオートで囲まれた文字列)を直接代入するか、string 型の変数を利用します。
<文字列リテラル(ダブルクオートで囲まれた文字列)を利用して代入>
myString = "Hello World!";
<string 型の変数を利用して代入>
string message = "Hello World!"; myString = message;
どちらの場合もこの処理により、 myString に "Hello World!" という文字列が代入されます。 また、以下のように初期化と代入を同時に行うこともできます。
string myString = "Hello World!";
文字列操作
文字列は代入することで別の文字列に変更できます。 それ以外にも、文字列そのものに対して変更を加えることがあり、それを文字列操作と呼びます。 文字列はプログラムで非常に頻繁に利用されるデータ型であり、文字列を操作することが多くあります。
文字列操作には、例えば以下のような処理が含まれます。
文字列の長さ(文字数)を取得する。→ Hello Wolrd が何文字か数える
文字列を分割する。 → Hello Wolrd を Hello と World に分ける
文字列を検索する。 → Hello World の中から World を見つけて使う
文字列を置き換える。 → Hello World の World を Unity に置き換えて Hello Unity にする
文字列を切り出す。 → 文字列の指定した位置から文字を切り出す。例えば、最初の2文字を切り出したり、4文字目から最後までを切り出したりする
文字列を大文字 / 小文字に変換する。 → 大文字から小文字、小文字から大文字に変換する
文字列の前後の余白を削除する。 → Hello Wolrd の真ん中の空白を削除して HelloWorld にする
これらの処理を行うことで、文字列データを必要な形式に整形したり、データを処理するための情報を得たりすることができます。
文字列操作は、プログラム開発において非常に重要な技術の一つであり、多くのプログラムで利用されています。 特にゲーム制作においては、テキストの表示や操作が頻繁に行われるため、文字列操作の知識は覚えていくとよいでしょう。
ポイント① null と空文字列の違いは?
null(ヌル)と空文字列(くうもじれつ・からもじれつ)は、共に文字列を表現するために使用されますが、意味や使い方が異なります。
nullは、変数に値が割り当てられていないことを表す特別な値です。 つまり、nullは何もないという状態を表します。 nullが代入された変数を参照すると、実行時に Null Reference Exceptionという例外が発生します。
一方、空文字列は、文字列の長さが0であることを表します。英語では empty と表現します。 つまり、文字列としては存在していますが、文字列に何の文字も含まれていないということです。 空文字列は、""(ダブルクォーテーションの中に何も書かない)で表されます。 null とは異なり、空文字列が代入されている変数は、参照してもエラーにはなりません。
また単語として空白文字列(くうはくもじれつ)という単語もあります。 これは半角スペースの文字列のことであり、" "(ダブルクォーテーションの中に半角スペースを書く)で表されます。 文字列の長さ(文字の数)は半角スペースの数になり、この例であれば、1となります。 こちらも値として代入されていますので、参照してもエラーにはなりません。
具体例を挙げると、以下のようなコードになります。
string myString1 = null; string myString2 = ""; string myString3 = " ";
上記の例では、myString1にはnullが、myString2には空文字列(empty)が、myString3には空白文字列(半角スペース)1文字が代入されています。
以下は、nullと空文字列を判定するコード例です。
if (myString1 == null) { // myString1がnullの場合に実行される処理 } if (string.IsNullOrEmpty(myString2)) { // myString2がnullか、空文字列(empty)の場合に実行される処理 } if (string.IsNullOrWhiteSpace(myString3)) { // myString3がnullか、空文字列(empty)か、空白の文字列(半角スペース)のみの文字列の場合に実行される処理 }
上記の例では、myString1がnullの場合には、if文の条件式がtrueとなり、if文の中の処理が実行されます。
また、string.IsNullOrEmpty()メソッドを使用することで、myString2がnullか空文字列の場合に、if文の条件式がtrueとなります。
同様に、string.IsNullOrWhiteSpace()メソッドを使用することで、myString3がnullか空文字列か空白文字列のみの場合に、if文の条件式がtrueとなります。
これらは混同しやすいですし、また空文字列と空白文字列は似ていて異なる単語ですので、間違えないようにしましょう。
ポイント② 文字列の結合
複数の string 型の文字列同士は +演算子で繋げることで1つの文字列にすることができます。 これを文字列の結合といいます。
string str1 = "Hello"; string str2 = "World"; string result = str1 + " " + str2; // resultは "Hello World" となる
まとめ
string 型は、文字列の検索や置換、分割、大文字 / 小文字の変換など、多くの文字列操作を簡単に行えるようにするメソッドを提供しています。 これらのメソッドを組み合わせることで、複雑な文字列操作も簡単に行うことができます。
ゲーム開発においては、メッセージやユーザーインターフェースの表示など、多くの場面で string 型が利用されます。 まずは string 型の基本的な使い方を覚え、必要に応じてメソッドの使い方を学ぶことが大切ですね。