HOME » » » » HERE

サムネイル画像
ゆにすちC#基礎編(この画像は、https://www.pakutaso.com/さまから借用しています)

こんにちわ、横浜すみっこクリエイターととです。

Unityでゲームを制作して販売するまでの軌跡を描くゆにすち!C#基礎編です!

前回、アセットとしてスクリプトファイルの生成をしました。今回はそのプログラムにコードを少し加えて、コンソールウィンドウに文字列を表示してみましょう。

また「コーディングスタイルについて」を先にご一読いただけますと幸いです。

ゆにすち!シリーズとは

このシリーズではUnityでSTEAM販売を目指す!略してゆにすち!と銘打ち、モデリングもプログラミングも企画も販売も何から何までぜ~んぶド素人のととが、PCゲームを考え、制作して、販売するまでの風景を履歴として残していくものです。

このC#基礎編では、Unityでのコーディングに困らないよう、助走をつけるイメージでプログラムの一般的な知識を中心に学んでいきます。

この記事のポイント!

  • コンソールに文字列をコード紹介
  • 文字列とは、文字のカタマリのこと
  • 行末は必ずセミコロンで終える
  • 大文字と小文字は区別される
  • スクリプトはオブジェクトにアタッチされてはじめて実行される

Contents

  1. コーディングスタイルについて
  2. 文字列を出力するコード
  3. プログラム実行
  4. 今回のコード

コーディングスタイルについて

最初におことわりです。

このブログで表示するスクリプトはVS Codeのデフォルトコーディングスタイルと異なっています。

基本的にはK & Rスタイルに準じており、プラスアルファで少しオリジナルを加えています。

特に大きく異なるのは、{}(中かっこ / 波かっこ)前後の改行です。

このスタイルを採用している理由は、

  • 記事の長さを少しでも短くしたい
  • 個人的に可読性が高いと感じる

からです。

ブログテンプレートを作成するにあたりjavascriptに触れる機会があったため、こちらに見慣れているのだと思います。

改行位置や半角スペースは、プログラム実行に一切影響しないのでご安心ください。お手元の環境とは異なってしまい申し訳ないのですが、適宜読み替えてください。

文字列を出力するコード

文字列とは

手始めに、文字列をコンソールウィンドウに表示するコードを書いてみましょう。

ゆにすち(文字列とは、文字のカタマリのことです 文字列

文字列というのは、文字のカタマリのことを指す、プログラミング特有の言い回しです。

"ドーナツが食べたい"  // 日本語(全角文字)も使用可能
""           // 長さがゼロであっても文字列
"125"          // 数値も文字列として認識

上のように""(ダブルクォーテーション)でくくった範囲が文字列となります。

コーディングでは、半角英数記号での記述が基本となります。ただし、文字列の中では日本語などの全角文字も使用可能です。

また、""(ダブルクォーテーション)の間に何も記述せず、文字数がゼロであったとしても長さ0の文字列として認識されます。

数字も""(ダブルクォーテーション)でくくることにより、数値としてではなく文字列として認識されることになります。

記述場所

今回のコードは、Startブロックの中か、Updateブロックの中に書いていきます。

前回解説しましたが、Startブロックは1回だけ、Updateブロックは繰り返し実行されます。

今回は、1回だけ表示されれば十分なのでStartブロックの中に書くことにしましょう。

Updateブロックに書いて、どうなるのか試してみるのも良いでしょう。

Debug.Log();

これまで何度か登場しているコードです。

ゆにすち(「Debug.Log();」は《コンソール》ウィンドウに文字列を出力します) 文字列を出力するコード

これは、コンソールウィンドウに文字列を表示するコードです。

ちなみにプログラミングでは、コンソール画面に何かを表示することを出力すると表現します。

Logの後ろの()の中に書いた文字列がコンソールウィンドウに出力されます。

今回は、Hello, World!と表示するプログラムを書いてみましょう。

void Start() {
  Debug.Log("Hello, World!");
}

前回作成したスクリプトファイルを開いて、上のようにStartブロックの中に書き加えてください。このとき""(ダブルクォーテーション)でくくることを忘れないようにしてください。

行末セミコロン

ゆにすち(ブロック以外の行末にはセミコロンを付けます) 行末セミコロン

1行で記述できるコードの行末には、必ず;(セミコロン)を付けます。

文が長くなり、エディターの自動折り返しなどで2行以上に渡る記述になったとしても同様です。

ブロック以外は;(セミコロン)で終わる、と認識していれば良いでしょう。

;(セミコロン)がないと、エラーが発生して動作しません。

大文字と小文字は別物

C#では、アルファベットの大文字と小文字を区別して実行します。

debug.Log("Hello, World!");

上のように記述するとエラーになってしまいます。debugと先頭文字が小文字になっているためです。

Debug.Log("hello workd!");

正しくは、Debugと大文字にする必要があります。

ちなみに上の例では、文字列内が全文字小文字・カンマ忘れ・誤字ありと誤植だらけですが、このまま実行されてしまいます。文字列はプログラム側では間違いを認識しようがありません。

プログラム文のミスは、エディターの警告などでも気付けると思います。むしろ文字列のように自動チェックが入らない部分には細心の注意が必要です。

プログラム実行

コーディングだけでは実行されない

では、実行してコンソールウィンドウに出力されるか確認してみましょう。

VS CodeからUnityにフォーカスを移すと、数秒の読み込みが走ります。ここで書いたコードが正しく動きそうかどうかチェックしています。

コンパイルドメインリロードという処理がされているそうです。

まずはコンソールウィンドウを表示させましょう。操作方法が分からない場合は、「【Unity】エディターの画面レイアウトを見てみよう!ゆにすち! - 入門編02」をご覧ください。

準備が整いました。エディター上部のツールバー、(再生ボタン)をクリックしてシーンを実行してみてください。

さぁ、いかがでしょう!

ゆにすち(なにも出力されません) 再生しても何も表示されない

コンソールウィンドウにHello, World!と出力されたでしょうか。

はい、出力されていないのが正解です。実はここまでの手順だけでは出力されることはありません。

大切な手順をスルーしてしまっています。

ゲームオブジェクトにアタッチ

コードを書いただけでは、そのプログラムは実行されることはありません。

スクリプトファイルは、アセットとして準備したことを思い出してください。アセットを作成・編集しただけでは、シーンと関連付けがない状態です。

そのためスクリプトファイルは参照されることもなく、コンソールウィンドウも音沙汰がなかった、というわけです。

シーン再生時にスクリプトファイルを実行するためには、シーン内に配置されたゲームオブジェクトにスクリプトファイルをアタッチしておく必要があります。

関連するゲームオブジェクトにアタッチするのが良いのですが、今回はコンソールウィンドウに文字列を出力するだけですので、なんでも構いません。キューブを作成してアタッチすることにします。

ゆにすち(スクリプトファイルをゲームオブジェクトにアタッチします) スクリプトファイルをゲームオブジェクトにアタッチ

シーンビューまたはヒエラルキーウィンドウ上のゲームオブジェクトにスクリプトファイルをドラッグ&ドロップすることでアタッチできます。

ゆにすち(《インスペクター》ウィンドウからアタッチする方法もあります) インスペクターウィンドウからのアタッチ

または、ゲームオブジェクトを選択した状態でインスペクターウィンドウにドラッグ&ドロップするか、コンポーネントの追加から作成したスクリプトを選択します。

ゲームオブジェクトにアタッチしたスクリプトは、コンポーネントとして振る舞います。

Hello, World!

もう一度、(再生ボタン)をクリックしてシーンを実行してみましょう。

ゆにすち(「Hello, World!」が出力されました) Hello, World!

今度こそコンソールウィンドウにHello, World!が表示されたと思います。

今回のコード

最後に今回使用したコードを書いておきます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FirstScript : MonoBehaviour
{
  // Start is called before the first frame update
  void Start()
  {
    Debug.Log("Hello, World!");
  }
  
  // Update is called once per frame
  void Update()
  {
    
  }
}

次は、このコードの続きからになりますので、合わせておいてください。

まとめ

さて、いかがでしたか。今回は、文字列を出力するコーディングを解説しました。

小さな一歩ですが、自分の手で書いたプログラムが動作するのはとても気持ちがいいことです。この気持ちをいつまでも忘れたくないものですね。

次回予告

Next time on... 【Unity】「コメント」で明日の自分へメッセージを!

次回は閑話休題、箸休め的な内容です。とはいえ、コメントを残すこと自体はとても重要です。コメントの書き方や、コメントアウトとの違いを一緒に学んでいきましょう。
では、今回はこの辺で。

コメント