unity项目——德军总部(巡逻兵)

本文介绍了一个Unity项目——德军总部,玩家需要避开巡逻兵解救被囚战友。文章详细讨论了游戏中的订阅与发布模式、工厂模式、动作管理器与巡逻逻辑处理,以及友军追逐逻辑。通过GitHub链接和B站视频提供了代码和演示。
摘要由CSDN通过智能技术生成

先放Github地址:https://github.com/kotomineshiki/SearchArmy
视频地址:https://www.bilibili.com/video/av23326530/

动作表格

触发条件 动作对象 对象行为 实现位置
按下开始键 全体 允许移动 UserGUI
(开始后)按下方向键 游戏主角 向各个方向运动 UserGUI
敌人未看到主角 敌人 进行特定路线的巡逻 GoPatrolAction
敌人看到主角 敌人 开始追逐主角 Eye Sight
主角碰到友军 分数管理器 分数++ 并且剩余友军数目– GameEventManager
主角碰到友军 友军 开始跟随主角
跟随状态的友军被敌人碰到 友军 放弃跟随
敌人碰到主角 主角 主角死亡,游戏结束
主角队伍碰到终点 主角 游戏结束,获得胜利

玩法部分

主角闯入了德军总部,他需要解救自己被囚禁的战友(方块来表示)并带领他们达到出口。他们在行进途中需要避开巡逻兵的追捕。

这次我没有按照之前同学做的规则来实现,而是自己重新制定了玩法。本次demo中使用了订阅与发布模型、工厂模式、单例模式

订阅与发布模式

这次的游戏结束控制和友军碰触时用订阅与发布模式做的。这个模式很像uwp中的委托。
订阅与发布模式也被称为观察者模式。其定义为:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。其有以下特征

  1. 发布者与订阅者无直接耦合关系
  2. 分离事件与实现

订阅发布的起源:这个系统最早是为了实现成就系统。比如说总数类成就:击杀某敌人300次。如果不使用本系统,那么会导致一个问题:每想增加一个成就,都会导致运行逻辑代码的修改。而且随着成就系统的复杂,运行逻辑代码会变得十分庞大——处处遍布着“补丁”。 订阅模式使得这一部分代码得以从运行逻辑中分离,在逻辑代码中只负责发布消息,在成就系统中订阅这些消息。
简单来说,观察者模式是希望“事件发生”和“功能实现”分离开。

那么观察者是如何实现的呢?在c++中的函数指针,也就是c#中的委托可以用。剩下就是代码了

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

public class GameEventManager : MonoBehaviour 

    public delegate void GameoverEvent();
    public static event GameoverEvent GameoverChange;

    public delegate void FriendTouchEvent();
    public static event GameoverEvent FriendTouchChange;

    pu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值