Inspectorでの接続
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 8/60。
ボタンは、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 ()リストには表示されないため、ボタンを両方の方法で設定すると、両方が呼び出されます。
チャレンジ
簡単Drawbridge.csで跳ね橋の3つのボタンを動作させましょう。
- 各ボタンの「クリック時(On Click ())」の行では、
Raise、Lower、またはToggleLampを呼び出します。LowerBridgeをLowerに名前変更します。 public void Raise()を記述します。bridge.localRotationがx軸を中心に70度回転し、statusTextにはBridge: upと表示されます。public void ToggleLamp()を記述します。warningLampがオフのときはオンに、オンのときはオフに切り替えます。
「プレイ」を押すと、すべてのボタンがそれぞれの機能を果たします。その後、「確認」を押します。
自分で試してみよう
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";
}
}
本格的なゲームを作るのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド