Inspector에서 연결하기
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 8번째.
버튼은 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 하나를 받는 메서드가 표시됩니다. 이 값은 행에서 설정합니다. private NextTrack은 목록에 표시되지 않으므로 선택할 수 없습니다. 행에는 메서드 이름이 저장됩니다. NextTrack의 이름을 SkipTrack으로 바꾸면 행에 <Missing Jukebox.NextTrack>이 표시되고, 오류가 Console에 나타나지 않은 채 클릭해도 아무 일도 일어나지 않습니다.
Inspector의 행은 씬에 배치된 버튼에 적합합니다. 팀원 누구나 스크립트를 열지 않고도 버튼이 호출하는 항목을 확인하고 변경할 수 있습니다. 코드의 AddListener는 게임 실행 중에 생성되는 버튼이나 변수의 값을 전달하는 호출에 적합하며, 메서드 이름을 변경하면 컴파일러가 이를 잡아냅니다. 코드에서 추가한 리스너는 On Click () 목록에 표시되지 않으므로, 버튼을 두 방식으로 모두 연결하면 둘 다 호출됩니다.
챌린지
쉬움성의 도개교에는 버튼이 세 개 있으며, Inspector에서 BridgeControl의 Drawbridge 스크립트에 연결되어 있습니다. 아직 어느 버튼도 작동하지 않습니다. Hierarchy에서 RaiseButton, LowerButton, LampButton을 선택하고 각각의 On Click () 행을 확인하세요. 클릭 시 호출되는 메서드의 이름이 표시되어 있습니다. Drawbridge.cs만 변경하여 세 버튼을 모두 작동하게 만드세요.
- 메서드 중 하나는 이미 다른 이름으로 작성되어 있습니다. 해당 행에 표시된 이름으로 바꾸세요.
- 올리면
bridge가 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";
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.