Menu
CoddyTech

在 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 () 列表中,因此,同时通过这两种方式绑定的按钮会同时调用两者。

challenge icon

挑战

简单

让绘图桥的三个按钮在 Drawbridge.cs 中正常工作。

  1. 每个按钮的“On Click ()”行都会调用 Raise、Lower 或 ToggleLamp。将 LowerBridge 重命名为 Lower。
  2. 编写 public void Raise():让 bridge.localRotation 绕 x 轴旋转到 70 度,并让 statusText 显示 Bridge: up。
  3. 编写 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 在线编辑器