回顾:门的状态
本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 41 课,共 64 课。
这一章为每种状态都创建了一个独立的类,用一个 StateMachine 运行它们,并让每种状态自行决定如何退出。门将这三种做法结合在一起。
挑战
中等在 DoorStates.cs 中补全城堡门的五种状态;Door.cs 中有辅助方法。
- Locked:
door.PressedNear()会记录Locked。Door.Unlock()会将上锁的门切换到closed。 - Closed:
PressedNear()会切换到opening。Opening:当door.SlideTo(door.openY)返回 true 时,切换到open。 - Open:经过
door.stayOpen秒后,切换到closing。 - 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()
{
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
Unity 游戏架构中的所有课
自己练习: Unity 在线编辑器