Menu
CoddyTech

回顾:门的状态

本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 41 课,共 64 课。

这一章为每种状态都创建了一个独立的类,用一个 StateMachine 运行它们,并让每种状态自行决定如何退出。门将这三种做法结合在一起。

challenge icon

挑战

中等

在 DoorStates.cs 中补全城堡门的五种状态;Door.cs 中有辅助方法。

  1. Locked:door.PressedNear() 会记录 Locked。Door.Unlock() 会将上锁的门切换到 closed。
  2. Closed:PressedNear() 会切换到 opening。Opening:当 door.SlideTo(door.openY) 返回 true 时,切换到 open。
  3. Open:经过 door.stayOpen 秒后,切换到 closing。
  4. Closing:PressedNear() 会再次打开门;否则,当 SlideTo(door.closedY) 返回 true 时,切换到 closed。

按下 “开始”,拿到钥匙并打开门。然后点击 “检查”。

亲手试试

using UnityEngine;

public class LockedState : IState
{
    private Door door;

    public LockedState(Door door)
    {
        this.door = door;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
    }

    public void Exit()
    {
    }
}

public class ClosedState : IState
{
    private Door door;

    public ClosedState(Door door)
    {
        this.door = door;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
    }

    public void Exit()
    {
    }
}

public class OpeningState : IState
{
    private Door door;

    public OpeningState(Door door)
    {
        this.door = door;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
    }

    public void Exit()
    {
    }
}

public class OpenState : IState
{
    private Door door;

    public OpenState(Door door)
    {
        this.door = door;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
    }

    public void Exit()
    {
    }
}

public class ClosingState : IState
{
    private Door door;

    public ClosingState(Door door)
    {
        this.door = door;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
    }

    public void Exit()
    {
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

Unity 游戏架构中的所有课

自己练习: Unity 在线编辑器