【Unity】コルーチンってなんなのなの? って時に読む記事【解説】
コルーチンをおまじない的に使っているけど、そもそもコルーチンってなんなのなの? って思った時にオススメしたい記事。ポイントは中断と再開が可能な点。初心者向けを謳いながら割とマニアックなところに触れたり、マルチスレッドとの目的の違いにも触れています。
あなたのゲームをいち早く完成させるための研究所
コルーチンをおまじない的に使っているけど、そもそもコルーチンってなんなのなの? って思った時にオススメしたい記事。ポイントは中断と再開が可能な点。初心者向けを謳いながら割とマニアックなところに触れたり、マルチスレッドとの目的の違いにも触れています。
The referenced script on this Behaviour (Game Object '<ゲームオブジェクト名>') is missing!のメッセージが表示されるときの対処法について。多くの場合、スクリプトを消したことでそれを参照していたコンポーネントでMissingが発生しているのが原因です。特にPrefabのコンポーネントは忘れやすいので注意。
AddressableAssetを使った場合に、fbxファイルをインポートした時に設定するAnimationタブにてエラーが発生します。外部からインポートしたアニメーションクリップの設定ができなくなるので、AddressableAssetを使っていても、fbxのインポート時は外しておくべし。
SliderのValueをInspectorから変更するとSendMessage cannot be called during Awake, CheckConsistency, or OnValidateの警告が出て来ますが、これはUnity2018.2でも変わらずでした。実害は無い(と思う)けど、コンソールが警告で埋め尽くされるので、できれば直して欲しいなーUnityさん(チラッ)
5.6で作ったプロジェクトをUnity2018.2で開いたところ、PackageManagerに関する権限エラーが約200件ほどコンソールに出力されました。sudoを使った権限変更で対応できるので、ビビらず対処するとよろし。
プログラミングをしていると無意識のうちに車輪の再発明をしてしまう場合。自分のアイディアが既に考えられたものだと知るのは辛いけど、先駆者がいないか確認するのは大事。UnityではAsset Storeをうまく使うと車輪の再発明を避けられるので、そのメリットをお伝えしたい。
Inspectorウィンドウへの表示に関係するUnityのAttributeをまとめています。このブログではこれらのAttributeについて詳細記事を作成しているので、使い方を掴むのにも使えます。
HelpURLAttributeを使うことでInspectorウィンドウからヘルプページに飛ばすことができます。1クラスにつき1つのURLを指定できるので、自作クラスのリファレンスページに飛ぶようにすれば、コードを触らない人にもフィールドやメソッドの役割を伝えることができます。
Inspectorウィンドウに表示するフィールドはToolTipAttributeを使ってヒントメッセージを表示すると親切です。カーソルを合わせるだけでメッセージを表示できるので、Inspectorウィンドウ内のスペースも取らなくて便利。チーム内の意思伝達のおともにぜひ。
複数行テキストを扱うなら、[Multiline]もいいけど[TextArea]を使うと便利です。何よりスクロールバーを使えるのがありがたい。テキストエリアの内容確認ならスクロールバーがあった方が何かと扱いやすいです。
Inspectorウィンドウで複数行テキストエリアを表示したい場合は[Multiline]のAttributeを使います。長文を書く場合には通常のテキストフィールドだと狭いため、ある程度大きい複数行テキストエリアにしておくと編集しやすいです。
Buttonコンポーネントを使わないでクリックを検知する方法です。UIを用意しなくても、3Dオブジェクトでクリックを検知できるため、3Dゲームで直接オブジェクトをクリックして何かアクションを起こしたい時に便利。
追加タグを持ったオブジェクトが含まれるパッケージをインポートした時に、スクリプトからそのタグを使って操作するとどうなるか実験してみました。スクリプトリファレンスにも『タグマネージャーで登録してから使ってね』とあるので予想はつきますが、手を動かしてチャレンジ。
バッケージをインポートしたときのタグの動作についてメモ。追加タグを持ったオブジェクトをインポートした直後は追加タグが一覧に追加されていますが、プロジェクトを開きなおすとタグの一覧から消えています。なんだこれ。
SpaceAttributeはInspectorウィンドウで余白を表示することができるAttributeです。関連性のあるフィールドをまとめて表示すれば、どこを触ったらいいのか分かりやすくなります。HeaderAttrubuteと組み合わせればより効果的。
HeaderAttributeを使って、Inspectorウィンドウに表示されるフィールドを整理して表示できます。RPG系のゲームではテストプレイ中にパラメータをいじることも多いと思うので、Headerをうまく使って整理しておくと、操作するべきフィールドがすぐに見つかるはず。
初心者の時に使い方に迷ったDeg2RadとRad2Degの使い方についてメモ。最初はメソッドと勘違いしていたので引数を渡そうとしたりと、大混乱した記憶があります。変換用の値を返すプロパティなので、掛けるだけで良かったのに……orz この記事では簡単にサンプルコードも載せています。
切り上げ、切り捨て、偶数丸めをしたい時にはMathfのCeil、Floor、Roundを使うと便利。使い方も難しくないので、RPGのダメージ計算とかでガンガン使えると思います。Roundは四捨五入じゃないので若干戸惑うかも。
[DisallowMultipleComponent]のAttributeを使うことで、同一のゲームオブジェクトに、同じスクリプトまたはコンポーネントを複数アタッチできないようにします。1行追加するだけで実現できるので、Manager系のクラスには付けておくと安心かも。
アタッチしてないコンポーネントをスクリプトから操作しちゃうこと、よくありませんか? うっかりGetComponentしてエラーを出しちゃう……そんな時には、RequireComponentのAttributeを付けておくのがオススメ! スクリプトをアタッチするときにコンポーネントも一緒にアタッチしてくれるので、うっかりさんも安心です(通販風)