PhotonSystem 2022/03/05 19:25

今からUnityでゲームを作る貴方へ送る10個の言葉

C++言語とDirextXでごりごりゲームを作るのに限界を感じて
Unityで移行して早五年くらい経つ自分が
とりあえずUnityでゲームを一本作ってみて気を付けたほうがいいポイントを
メモがてらにここに書き記そうと思います

初歩的なものから、Unityに限った話じゃないものがたくさん含まれます
(10年以上ゲーム作っておいてまだ学ばないのか)

1.日本語が含まれるパスを使わない

ゲームつくりに限った話ではないですけど
PCのユーザー名に至るまで全部英語が推奨です
(日本語のマルチバイト文字なんて考慮されてないんです)
C\るうん\UnityProject
とかになってるとまぁ大抵のものがバグりちらかします
全部バグるならともかく一部だけバグるからたちが悪いです

最近の変わり種ではフォントが日本語名だったのですが
フォントからテクスチャを作る機能利用時だけまったく動かなく
それが原因で半日くらい潰しました

なーんだ平気じゃーんって油断してると刺されます
気を付けて下さい

2.大文字小文字は統一する

「PlayerIcon.png」というファイルがあったとしましょう
例えば全部小文字の「playericon.png」でUnity上では読み込めますが
違うプラットホームでは読み込めないパターンがあります

スクリプト側で全部小文字に変換するなり処理をいれて事なきを得ましたが
うっかり発生すると非常に面倒です

2.ファイル名には種別をいれとけ

仮にプラントというモンスターを作ったとしましょう

そしてそのモンスターにかかわる画像やスクリプトすべてに
「ene_plant」とファイル名を付けたとします

画像は画像フォルダに、スクリプトはスクリプト用のフォルダへ
もちろん拡張子が存在するのでかぶったとしても何の問題もない……と思うでしょう?


UnityのAssetBundlesと呼ばれる機能で見たビューがこちらになります
なんとういうことでしょうフォルダも表示されなければ拡張子も表示されません

間違ったファイルが入ってたり足りなかったりしてもぱっと見じまったくわかりません
なので「tex_ene_plant」や「mat_ene_plant」などにして
拡張子なしでもファイル単体で何のファイルか判別出来たほうがいいと思います

ここらへんはUnityのバージョンが新しくなるとかわるかもしれません

3.Unity標準の「PlayerPrefs」は使うな

標準で使えるPlayerPrefsはなんとレジストリにセーブデータを書き込みます

今すぐやめましょう

4.スクリプト内でUiなどは直接Pixel数値で動かさない

Unityには画面のサイズがかわったときに
自動的にUIをスケールしてくれるすごい便利な機能があります

移植のしやすいUnityを使うのならば
いずれゲームを解像度が異なる環境でリリースすることも考えられるでしょう

例えば動く指のカーソルとか固定値で動いてるものは悲惨なほどズレます

ちょっとだけ面倒ですけど
最初から指カーソルとかは目的座標が設定されたらそこに移動するとかのほうがいいかもしれないです

5.Ui.Textを使わない

最初からあるUi.Textさんには皆さんお世話になると思いますが
使い方に慣れたらTextMeshProUGUIに移行しましょう

こいつのすぐれた点は文字列の途中に好きな画像を差し込めるところです

例えば操作説明の時に「Aボタン」と表記しなくて
Aボタンの「画像」を表示させることもできちゃいます


『別に「Aボタン」でも「画像」でもよくね?』って思います

6.Resourcesフォルダを使うな

ResourcesフォルダはUnityにおいて
動的にデータを読み込むことができる(おそらく)唯一のフォルダです

正直これを使ったままゲームを作ることもできますし
なんならこれを利用してなんの不自由のない方もいるでしょう

ただしこのフォルダには欠点があって
おおざっぱにしかロードやアンロードをしてくれない点です

PCならともかくスペックがかつかつな機種などでは非推奨とされています

修正はわりと大がかりな変更になると思うので早めに卒業して
AssetBundleと対峙することをおすすめします

7.Inspectorで巨大なデータを扱うな

初めてUnityに移行して思ったこと

「Inspectorならゲームを起動しながら値の調整ができる!すげー!」

ゲームをプレイしながら敵のHPを調整したりなどわりとなんでも設定できます

ただし情報量に応じてとんでもなく動作が遅くなりますしチェックが難しくなります
(それ専用のアドインなどを入れれば話は別だが)

例えばモンスターの詳細ステータスやアイテムの細かなデータなどは
おとなしくCSVファイルなどで管理しましょう

8.Find~をあんまり使うな

スクリプトでよく使われるFind~は
ヒエラルキー一覧から条件に応じたものを引っ張ってくることができます

便利な反面くっそ重いらしいので毎フレーム使ったりするのはやめよう

9.UI用の文字を直接Inspector入力するな

スタート画面のシーンにおいたUi.TextのInspectorにあるTextに
「ゲームスタート」と直接記載するのはやめましょう

どういう時に困るかというとそれは多言語対応するときです

「俺は日本語しか対応しないぜ!」

って硬い意志があるのなら話は別ですが
そうでないのなら適当なスクリプトのInspectorの「STR_GAMESTART」などの
文字列を設定しておきスクリプト側でゲーム中の言語に応じた文字列を
引っ張って来るといいです


10.AssetBundleからは逃げられない

多くは他の方の記事を見たほうが早いです

個人的な意見をいえばゲーム作ってるなかで一番辛かった作業はAssetBundle対応でした

みなさんは僕みたいにならないようにもっと早く対応してください


もしこれを見て誰か少しでも助かったら幸いです

何か質問、Unityのここが辛かった!などがあればコメント欄までお願いします!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索