インテージテクノスフィア技術ブログ

株式会社インテージテクノスフィアの社員達がシステム開発や仕事に関する技術情報を随時掲載いたします

Unityでスマホゲームを作ってみた!と役員さんの投稿がきた

こんにちはアイダです。今回は当社役員のSさんからのUnity&C#初体験レポートが届きましたので投稿致します。

きっかけ

 皆さん、こんにちは。インテージテクノスフィア役員のSです。

最近廃盤になった大好きなゲームを再現したいという思いから、Unityエンジンでのゲーム作りを趣味としている学生に出会いました。

そういえば数日前に技術探求委員会のアイダさん達からブログ原稿の依頼が来ていたっけ。必ずしも技術テーマじゃなくてもいいよと書いてあったけれど、それでは元技術者(!?)としてのプライドが許さないよね。

ということで、早速『 Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 』を書籍ストアでポチッ。届いた教科書を片手に私の猛勉強が始まりました。

Unityとは

 Unityとは、ユニティ・テクノロジーズ社が提供するゲームエンジン。

unity.com

 Unityで作ったゲームはPCだけでなく、スマートフォンやゲーム機など幅広いプラットフォームで実行可能なマルチプラットフォーム対応。

Unityはゲームエンジンにとどまらず、ゲーム作りに必要な素材(2Dや3Dのモデル、エフェクト、サウンド、スクリプト、プラグイン)を、無料もしくは低価格で提供しているアセットストアを利用でき、ハイクオリィティなゲームを作ることができます💛

Unityが対応する主なプラットフォーム

f:id:intage-tech:20200427221945p:plain

『Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座』で作れる6つのミニゲーム

※ 教科書どおりに私が実際に作成したものをキャプチャしました。私のスマホ(Android)で動きました!

1.おみくじルーレット(2D)

2.車を動かすゲーム(2D)

3.降ってくる矢を左右によけるゲーム(2D)

4.猫がジャンプして雲を上っていくゲーム(2D)

5.いがぐりの的当てゲーム(3D)

6.降ってくるリンゴをバスケットでキャッチするゲーム(3D)

Unityのインストール・環境設定

  1. Unity Hubのダウンロード(Unityのバージョン管理ツール)

   公式サイト https://store.unity.com/ja/  無料版Personalを選択

  1. Unity HubからUnityをインストール

  【Unityエンジン】

  ・Unity2019.3.7f1(実際に利用)      ・Unity2018.4.21f1(1つ前のバージョンもインストールしてみた)

  【C#スクリプト】

   ・Microsoft Visual Studio Community 2019(C#スクリプト作成時に利用)

  【Android開発】

  ・Android Build Support

  ・Android SDK & NDK Tools

  ・OpenJDK(JDK8はラインセンス体系が変わったため無料のOpenJDKを利用)

  【iOS開発】

  ・iOS Build Support(今回は使用しなかったけどインストールしてみた)」

※Unity Hub

いざ、ゲーム作り

※ 一番簡単な「1.おみくじルーレット(2D)」作成の流れで説明

  • プロジェクトを作成する
  • シーンを作成する(ゲームの画面単位に作るもの)
  • シーンにゲームで使うオブジェクトを配置する(ルーレットと針の画像を配置)
  • オブジェクトをコントローするC#スクリプトを作成する(クリックでルーレットを一定の速さで回すなど)
  • 作成したC#スクリプトをオブジェントにアタッチする(アタッチしないと動かない)
  • Android用にビルドする(PCとAndroid端末をケーブル接続してビルド&ラン)

これでゲームができてしまいます。

※【参考】「5.いがぐりの的当てゲーム」のUnity画面

実際の作成における苦労したところ

 Unityで一番難しいのは環境設定。教科書どおりに進めようとしてもなかなか思い通りに進まない。実際、この6つのミニゲームを仕上げるまでに6日間(土日)を使ってしまった。慣れた人なら2日くらいあればできてしまうと思う。Unity初心者ならではの苦労話をあげてみる。

◆その1◆ 

 C言語で育った私はC#のオブジェクト指向型プログラミングに苦戦。教科書通りにタイプするものの、タイプミス等でコンパイルエラーが発生。プログラムファイル内のエラーは解決できたが、別のプログラムとの間で整合性が取れていないことに気づくことができず。結局、Unityのインストールからやり直して対応することで、「あっ、もしかしてここでミスッていたのかも。」と気づく始末。

◆その2◆ 

 再インストールの機会は何度もあったにも関わらず、インストールでOpenJDKをインストールし忘れてしまい、Andorid用のビルド時にエラー発生。OpenJDKをインストールして先に進もうとするも、インフラPC(※アイダ注:当社は全員にノートブックを配布します。それをインフラPCと呼びます)の落とし穴にハマる。

PCのUSBポートからスマホへのケーブル接続で端末管理ツールにブロックされてしまった。が~ん、そうだった。セキュリティ上、外部媒体にコピーできないのだった。

◆その3◆ 

 仕方なくインフラPCをあきらめ、嫌がる息子のハイスペックノートPCを借り、またイチからインストール&ゲーム作成することに。いざ、Android用にビルドするも実機転送でエラー。Android本体側で開発オプションを設定する必要があった。開発向けオプションとUSBデバッグの両方をONにして再度ビルド&ラン。ようやく動いた!

◆その4◆

 2Dゲーム作成まではなんとか構築が進むも、3Dゲームに構築となるとTerrainを使って地面や山を作ったり、パーティクル機能を使ってエフェクトを設定したり、音声を加えたりなどの手順が増えくる。ひとつ手順を間違え、戻ってやり直そうとすると、なぜか整合性が取れなくなり、インストールし直しやプロジェクト作成からやり直す羽目になった。

◆その5◆

 途中でUnityのプロパティウィンドウの配置がおかしくなってしまい、Unityを再起動しても直前の環境を覚えていて修復に苦労した。タッチパッドでやっていたことも大きい。やっぱりマウスは必需品。それからハイスペックなノートPCでもUnityはとても重い。Desktopマシンじゃないと厳しいかな。

最後に

久しぶりに寝食忘れる楽しい時間を過ごすことができた。オブジェクト指向型プログラミングのクラスの考え方もなんとなく理解できたし。C言語でいうと構造体のメンバに関数を組み込んだものっていうカンジかな。(←間違ってたらご指摘を。)

このUnityの教科書の構成も素晴らしい。ぜひ、皆さんもチャレンジしてみてください。プログラムがわかならい初心者でも大丈夫。オジサンやオバサンも大丈夫。ただ、ハズキルーペが必要かもしれません。


Sさん投稿ありがとうございました。普段Sさんとはゲームの話ばかりするアイダですが、自分で作りたかったとは知りませんでした。この投稿からUnityが楽に動くPCをインフラPCとして配るといいよねと盛り上がりましたので期待しております。 2020/05/01 15:45 文面一部修正