unity 工作中常用到的设计模式_ 状态模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

unity开发者模式__状态模式

state目录下的脚本就是我们在不改变整体项目结构的情况下可以添加自己想要的状态
在这里插入图片描述

** 接下来看看这几个脚本分别代表什么,其中是如何去构建的**

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//管理接口的脚本
public interface Istate
{
    void Way();
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//可以理解为当前最新状态的管理控制类
public class Context : MonoBehaviour
{
    private Istate curState;

    //刷新主控制类中的当前状态
    public void SetState(Istate state)
    {
        curState = state;
        // Show();
    }

    //当前状态的切换方法,当然也可以在刷新当前状态的 SetState方法中就选择调用 看个人需求
    public void Show()
    {
        curState.Way();
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Run : Istate
{
    private Context _context;

    public Run(Context c)
    {
        _context = c;
    }
    
    public void Way()
    {
        _context.SetState(new Walk(_context));
        Debug.Log("当前状态切换到------>走");
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Walk : Istate
{
    private Context _context;
    public Walk(Context c)
    {
        _context = c;
    }
    
    public void Way()
    {
        _context.SetState(new Run(_context));
        Debug.Log("切换状态到----->跑");
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//多个状态来回切换
//1.需要一储存当前状态和行为的控制类 2.每个状态要去实现的方法继承接口 3.多个状态的脚本去实现同一个接口方法

public class Main: MonoBehaviour
{
    void Start()
    {
        Context  context = new Context();
        context.SetState(new Walk(context));
        context.Show();
        
        context.SetState(new Run(context));
        context.Show();
    }
}

输出后的结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值