MENU

UnityとC#、別々に学ぶと事故るぜ!俺がハマった「流れ」と「言葉」の罠

Unityの記事

あれはそうだな、ゲームクリエイターになるなんていう壮大な夢を本気で信じていた、まだ青二才だった頃のはなし。

目の前には『Unity』という名の、未来へといざなう宇宙船。 だが、その操縦桿を握るには『C#』という言語のライセンスが必要らしい。

当時の俺は、生真面目にもこう思ったんだ。

「よーし、まずはC#の分厚い教本をマスターしてから、Unityに乗り込んでやるぜ!」

と。 今思えば、それが地獄への片道切符だったとは知らずに…。 アンタには、俺と同じ轍を踏んでほしくない。だから、俺の屍を越えていってくれ。

もくじ

混乱の渦①:プログラムの「流れ」が違いすぎて遭難する

まず俺が叩きのめされたのが、プログラムの「流れ」の考え方だ。

C#の教本で習う「コンソールアプリ」ってのは、プログラムが”Main”っていう決まった駅から出発して、一本のレールの上を真っ直ぐ進む電車みたいなもんだった。シンプルでわかりやすい。

「なるほど、プログラムってのはこういうもんなんだな!」 そう確信してUnityの世界に足を踏み入れた瞬間、俺は唖然とした。

「駅はどこだ!?」「なんでこいつら、てんでバラバラに動き出すんだ!?」

そう、Unityは電車じゃなかった。 「ゲームが始まったら (Start)」「毎フレーム (Update)」「壁にぶつかったら (OnCollisionEnter)」… まるで、巨大な交差点で、無数の車がそれぞれの信号(イベント)をきっかけに動き出す、カオスな世界。それがUnityだったんだ。

先に「電車」の常識を頭に叩き込んじまったもんだから、この「交通渋滞」みたいな状況がまったく理解できず、俺は完全に思考停止しちまった。

最初からUnityっていう「交差点」の中で、C#っていう「交通ルール」を学んでりゃ、こんなことにはならなかったんだよ…。

混乱の渦②:「言葉の罠」にハマって抜け出せない

さらに俺を混乱の渦に叩き込んだのが、この「言葉の罠」だ。 同じ単語なのに、教本で習った意味と、Unityでの意味がビミョーに違う。これがマジで厄介だった。

ケース1:「オブジェクト」って、お前は誰だ!?

  • 教本の「オブジェクト」:
    • クラスっていう設計図から作られる、目に見えないデータの実体。幽霊みたいな、なんかフワッとした抽象的な概念だった。
  • Unityの「オブジェクト」:
    • ちがう、そうじゃない。画面にいるコイツ(キャラクター)やソイツ(アイテム)! ヒエラルキーに並んでる、**目に見える具体的な『モノ』**そのものだったんだ。「話がちげーじゃねーか!」と。

ケース2:「クラス」は「スクリプト(台本)」だった

  • 教本の「クラス」:
    • オブジェクトの「設計図」だ。プログラムの骨格をなす、なんかスゲー重要なやつ、みたいな。
  • Unityの「クラス」:
    • Unityじゃ、そいつは「スクリプト」って呼ばれる。こっちの呼び名の方が、断然しっくりくる。なぜなら、UnityにおけるC#コードは、キャラクターっていう「役者」に渡す『台本』そのものだからだ。
      役者に台本を渡して、初めてそいつが動き出す。この感覚が、Unityを理解する上でめちゃくちゃ大事だったんだよ。

先に教本の小難しい知識だけを頭に詰め込んじまったせいで、Unityの世界で使われる「実践的な意味」とのギャップに、俺は完全にやられたのさ。

じゃあいつ学ぶんだよ!:必殺技は、必要になったら覚えろ

「でもよぉ、C#って『オブジェクト指向』なんだろ?なんかスゲー難しい概念、勉強しなくていいのかよ?」って不安になるよな。わかる。

結論から言う。初心者のうちは、いらえね。

Unityでゲームを作り始めると、まず使うのは変数とかif文とか、そういう基本的な通常攻撃だけだ。それだけで、結構なところまで戦える。

で、ゲーム開発を進めていくと、いつか必ず壁にぶつかる。 「あー、スライムとゴブリンとドラゴン!敵キャラが増えすぎて、コードがぐっちゃぐちゃだ!まとめて管理してー!」 …と。

このタイミングだ。 この「マジで困った!」って時こそが、オブジェクト指向っていう名の「必殺技」を習得する絶好の機会なんだ。

「敵っていう共通の設計図(親クラス)を作って…」みてえな解決策が、体の芯までスッと染み渡る。目的もなく覚える技に、魂は宿らねえのさ。

C#の高度な機能は、Unityで「それが必要な壁」にぶつかってからで十分。むしろ、その方が圧倒的に効率がいい。

まとめ:だから、一緒に乗り込むのが一番の近道なんだ

長々と語っちまったが、要はこういうことだ。 初心者が「まずC#の基礎から」っていう一見マジメなルートは、

  1. プログラムの「流れ」が違いすぎて、混乱する
  2. 「言葉の扱い」が違いすぎて、混乱する
  3. いらない段階で「必殺技」を覚えようとして、挫折する

っていう三重苦の危険な道なんだ。

だから、プログラミング未経験で、これからUnityのゲームづくりの世界に飛び込もうってキミに言いたい。

分厚い教本で腕立て伏せする前に、まずUnityっていう宇宙船に乗り込んじまえ!

操縦桿を握りながら、必要なボタン(C#)を一つずつ覚えていくんだ。 その方が絶対楽しいし、何より迷子にならねえ。

さあ、恐れずにUnityを起動して、アンタ自身の手で、世界を動かす第一歩を踏み出してくれ!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
もくじ