在 Inspector 中连接
本课属于 Coddy Unity 学习旅程的“打造真正的游戏”单元。第 8 课,共 60 课。
按钮也可以直接在 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 参数,其值可在这一行中设置。私有的 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 在线编辑器