Unityを初めて1週間の人に読んでほしいC#のQ&A


Unityを初めて1週間の人に読んでほしいC#のQ&A


何かが解決できない時の確認用に(随時追加予定)
※ 元ネタは実際に生徒からよく受ける質問が多め。

Q:C#スクリプトはどうやって作ればいいの?

A:プロジェクトビューで右クリックして、Create → C# Script


Q:エラーは出てないのにスクリプトをゲームオブジェクトにアタッチできない!

A:スクリプトに書かれてるクラス名とファイル名が違う可能性あり。
大文字小文字も含めて一致させましょう。


Q:スクリプトからコンポーネントを取得したい

A:gameObject.GetComponent<コンポーネント名>(); で、そのスクリプトがアタッチされたゲームオブジェクトのコンポーネントを取得できます。
このとき「gameObject.」の部分は省略可。
※ 原則は「ゲームオブジェクト.ゲットコンポーネント」と覚えておくと↓のケースで迷わないで済むかも。


Q:スクリプトから別のゲームオブジェクトのコンポーネントを取得したい

A:まずは目当てのゲームオブジェクトを取得しましょう。
ゲームオブジェクトは GameObject.Find(“ゲームオブジェクト名”) で検索取得できます。
(変数を宣言してゲームオブジェクトを格納しておくなどもっとパフォーマンスの良い方法もありますが、変数とかよくわからんって人はひとまずこれ)
最終的には、GameObject.Find(“ゲームオブジェクト名”).GetComponet<コンポーネント名>()で、スクリプトがアタッチされているゲームオブジェクトとは別のゲームオブジェクトのコンポーネントが取得できます。


Q:コンポーネントが取得できたら何ができるの?

A:コンポーネントが取得出来ると、そのコンポーネントの各プロパティが参照できます。
例えばTransformならpositionやrotationなどの値が取得できる感じですね。
プログラムからコンポーネントを取得すると、インスペクターで表示されているプロパティだけでなく、コンポーネントが内部で保持しているプロパティも参照できたりします。
(例えばRigidbodyのvelocityなどは、インスペクターには表示されていませんが非常に利用頻度の高いプロパティです。)

 

  • このエントリーをはてなブックマークに追加

PAGE TOP