Inspector에서 연결하기
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 8번째.
Inspector에서 버튼을 연결할 수도 있으며, AddListener는 전혀 필요하지 않습니다. Button의 On Click () 목록은 비어 있는 상태로 시작합니다. +를 누르면 행이 추가됩니다. 스크립트가 있는 오브젝트를 행의 오브젝트 슬롯으로 드래그하면, 함수 드롭다운에 해당 오브젝트의 컴포넌트와 각 컴포넌트의 공개 메서드가 표시됩니다. 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 () 목록에 표시되지 않으므로 버튼이 두 방식으로 모두 연결되어 있으면 양쪽 모두 호출됩니다.
챌린지
쉬움Drawbridge.cs에서 도개교의 세 버튼이 작동하게 하세요.
- 각 버튼의 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 플레이그라운드