Inspectorでの接続
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 8/56。
ボタンは、AddListenerをまったく使わずに、Inspectorで接続することもできます。ButtonのOn Click ()リストは最初は空です。+を押すと行が追加されます。スクリプトを持つオブジェクトをドラッグして、その行のオブジェクトスロットに入れると、関数のドロップダウンにそのオブジェクトのコンポーネントと、それぞれのpublicメソッドが一覧表示されます。Jukebox > NextTrackを選ぶと、クリックするたびにこのメソッドが呼び出されます。
public class Jukebox : MonoBehaviour
{
public string[] tracks;
private int current;
public void NextTrack()
{
current = (current + 1) % tracks.Length;
Debug.Log("Now playing: " + tracks[current]);
}
}ドロップダウンに表示されるのは、publicで、戻り値がvoidであり、パラメーターを取らないか、行で値を設定するint、float、string、boolまたはObjectを1つ取るメソッドです。privateなNextTrackは一覧に表示されないため、選択できません。行にはメソッド名で登録されます。NextTrackをSkipTrackに変更すると、行には<Missing Jukebox.NextTrack>と表示され、クリックしても何も起きません。Consoleにエラーも表示されません。
Inspectorの行は、シーンに配置したボタンに適しています。チームの誰でも、スクリプトを開かずにボタンが何を呼び出すか確認し、変更できます。コード内のAddListenerは、ゲーム実行中に作成するボタンや、変数から値を渡して呼び出す場合に適しており、メソッド名を変更するとコンパイラーが検出します。コードから追加したリスナーはOn Click ()リストには表示されないため、両方の方法で接続したボタンは両方を呼び出します。
チャレンジ
簡単城の跳ね橋には3つのボタンがあり、InspectorでBridgeControl上のDrawbridgeスクリプトに接続されています。まだどのボタンも動作しません。HierarchyでRaiseButton、LowerButton、LampButtonを選択し、それぞれのOn Click ()の行を確認してください。クリック時に呼び出されるメソッド名が記載されています。Drawbridge.csだけを変更して、3つすべてを動作させましょう。
- メソッドの1つは、すでに別の名前で書かれています。その行に記載された名前に変更してください。
- 跳ね橋を上げると、x軸を中心に70度回転し(その
localRotation)、statusTextにBridge: upと表示します。 - ランプのボタンを押すと、
warningLampが消灯している場合は点灯し、点灯している場合は消灯します。
Playを押して、すべてのボタンを試してから、Checkを押してください。
自分で試してみよう
using UnityEngine;
using TMPro;
public class Drawbridge : MonoBehaviour
{
public Transform bridge;
public TMP_Text statusText;
public GameObject warningLamp;
public void LowerBridge()
{
bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
statusText.text = "Bridge: down";
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。