【UnityRPG游戏制作】Unity_RPG项目_玩法相关※

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创
👨‍💻 收录于专栏:就业宝典

🅰️推荐专栏

⭐-软件设计师高频考点大全



文章目录

    • 前言
    • 🎶(==四==) 玩法相关
    • (==1==) 面板显隐命令
    • (==2==) 玩家升级命令
    • (==3==) 玩家受伤命令
    • (==4==) 经验升级命令
    • (==5==) 武器和伤害命令
    • 🅰️


前言

请添加图片描述


🎶( 玩法相关


在这里插入图片描述


1 面板显隐命令


  • PUREMVC框架
using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:  面板隐藏命令
//-------创建者:         
//------------------------------public class HidePanelCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);Debug.Log("隐藏面板的命令开始执行");string panelName = notification.Body.ToString();//Debug.Log(panelName);SelectPanel(panelName);}/// <summary>/// 封装选择需要执行的面板/// </summary>/// <param name="panelName"></param>private void SelectPanel(string panelName){//面板命令的选择switch (panelName){case "BackpackPanel":Debug.Log("命令为BackpackPanel");if (!Facade.HasMediator(BackpackViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new BackpackViewMediator()); //注册该视图中介}//获取视图对应的中介BackpackViewMediator bm = Facade.RetrieveMediator(BackpackViewMediator.NAME) as BackpackViewMediator;if (bm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("BackpackPanel");}break;case "DefeatPanel":Debug.Log("命令为DefeatPanel");if (!Facade.HasMediator(DefeatViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new DefeatViewMediator()); //注册该视图中介}//获取视图对应的中介DefeatViewMediator dm = Facade.RetrieveMediator(DefeatViewMediator.NAME) as DefeatViewMediator;if (dm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {          //通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("DefeatPanel");          }break;case "GamePanel":Debug.Log("GamePanel");if (!Facade.HasMediator(GameViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new GameViewMediator()); //注册该视图中介}//获取视图对应的中介GameViewMediator gm = Facade.RetrieveMediator(GameViewMediator.NAME) as GameViewMediator;if (gm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("GamePanel");}break;case "NPCTipPanel":Debug.Log("NPCTipPanel");if (!Facade.HasMediator(NPCTipViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new NPCTipViewMediator()); //注册该视图中介}//获取视图对应的中介NPCTipViewMediator nm = Facade.RetrieveMediator(NPCTipViewMediator.NAME) as NPCTipViewMediator;if (nm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("NPCTipPanel");}break;case "RolePanel":Debug.Log("命令为RolePanel");if (!Facade.HasMediator(RoleViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new RoleViewMediator()); //注册该视图中介}//获取视图对应的中介RoleViewMediator rm = Facade.RetrieveMediator(RoleViewMediator.NAME) as RoleViewMediator;if (rm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("RolePanel");}break;case "StartPanel":Debug.Log("StartPanel");if (!Facade.HasMediator(StartViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new StartViewMediator()); //注册该视图中介}//获取视图对应的中介StartViewMediator sm = Facade.RetrieveMediator(StartViewMediator.NAME) as StartViewMediator;if (sm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("StartPanel");}break;case "StartTipPanel":Debug.Log("StartTipPanel");if (!Facade.HasMediator(StartTipViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new StartTipViewMediator()); //注册该视图中介}//获取视图对应的中介StartTipViewMediator stm = Facade.RetrieveMediator(StartTipViewMediator.NAME) as StartTipViewMediator;if (stm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("StartTipPanel");}break;case "StatePanel":Debug.Log("命令为StatePanel");if (!Facade.HasMediator(StateViewMediator.NAME))  //首先判断是否有该中介,没有就new一个{Facade.RegisterMediator(new StateViewMediator()); //注册该视图中介}//获取视图对应的中介StateViewMediator mm = Facade.RetrieveMediator(StateViewMediator.NAME) as StateViewMediator;if (mm.ViewComponent != null) //当对应的视图中介有关联界面面板时 {//通过UI管理器隐藏面板UIManager.GetInstance().HidePanel("StatePanel");}break;}}
}

2 玩家升级命令


请添加图片描述

using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:  玩家升级通知
//-------创建者:         
//------------------------------public class LevelUpCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);PlayerProxy playerProxy =  Facade.RetrieveProxy(PlayerProxy.NAME) as PlayerProxy ;if (playerProxy != null){playerProxy.LevUp (); //自己将数据升级playerProxy.SavaUp(); //数据保存SendNotification(PureNotification.UPDATA_ROLE_INFO, playerProxy.Data as PlayerDataObj) ; //发送角色信息更新通知}}
}

3 玩家受伤命令


  • 血条减少,玩家数据更新
  • 观察者模式
    请添加图片描述

请添加图片描述

using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能: 受伤命令
//-------创建者:         -------
//------------------------------public class HurtCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);Debug.Log("玩家受伤的命令开始执行");PlayerProxy playerProxy = Facade.RetrieveProxy(PlayerProxy.NAME) as PlayerProxy;if (playerProxy != null){playerProxy.LevUp(); //自己将数据升级playerProxy.SavaUp(); //数据保存SendNotification(PureNotification.UPDATA_ROLE_INFO, playerProxy.Data as PlayerDataObj); //发送角色信息更新通知SendNotification(PureNotification.PLAYER_INJURY, notification.Body);}}
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:  角色面板视图中介
//-------创建者:         -------
//------------------------------/// <summary>
/// 角色面板视图中介
/// 固定:
/// 1.继承PureMVC的Mediator脚本
/// 2.写构造函数
/// 3.重写监听通知的方法
/// 4.重写处理通知的方法
/// 5.可选:重写注册时的方法
/// </summary>
public class RoleViewMediator : Mediator
{//铭牌名public static string NAME = "RoleViewMediator";/// <summary>/// 构造函数/// </summary>public RoleViewMediator( ) : base(NAME){//可以去写创捷面板预设体的逻辑等}/// <summary>/// 重写监听通知的方法,返回需要的监听(通知)/// </summary>/// <returns>返回你需要监听的通知的名字数组</returns>public  override string[] ListNotificationInterests(){return new string[] { PureNotification.UPDATA_ROLE_INFO};}public void SetView(RoleView roleView){Debug.Log(roleView + "执行SetView");ViewComponent = roleView;//开始按钮逻辑监听roleView.back.onClick.AddListener(() =>{SendNotification(PureNotification.HIDE_PANEL, "RolePanel");});}/// <summary>/// 重写处理通知的方法,处理通知/// </summary>/// <param name="notification">通知</param>public override void HandleNotification(INotification notification){switch (notification.Name){case  PureNotification.UPDATA_ROLE_INFO:if (ViewComponent != null)          (ViewComponent as RoleView).UpdateView(notification.Body as PlayerDataObj);else   {Debug.Log("为空");  }break;}}/// <summary>/// 可选:重写注册方法(他们需要到Facde中注册)/// </summary>public override void OnRegister(){base.OnRegister();}}

4 经验升级命令


using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:  經驗更新命令-------
//-------创建者:         -------
//------------------------------public class EXPUpCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);SendNotification(PureNotification.UPDATA_EXP ,notification .Body);  //发送更新经验血条的通知}
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:玩家升级通知
//-------创建者:         
//------------------------------public class LevelUpCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);PlayerProxy playerProxy =  Facade.RetrieveProxy(PlayerProxy.NAME) as PlayerProxy ;if (playerProxy != null){playerProxy.LevUp (); //自己将数据升级playerProxy.SavaUp(); //数据保存SendNotification(PureNotification.UPDATA_ROLE_INFO, playerProxy.Data as PlayerDataObj) ; //发送角色信息更新通知}     }
}

5 武器和伤害命令


using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能:更换武器图标的命令
//-------创建者:         -------
//------------------------------public class WeaponUpCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);//先将玩家数据中更新武器信息PlayerDataObj playerProxy = Facade.RetrieveProxy(PlayerProxy.NAME).Data  as PlayerDataObj ;playerProxy.nowItem = notification.Body as Sprite;//playerProxy.item[playerProxy.index] = notification.Body as Sprite;//到时打开role面板时会自动更新数据//  (playerProxy.Data as PlayerDataObj).nowItem = notification.Body as Sprite;//而后发送武器更新的通知——目的是更新State面板中的武器信息SendNotification(PureNotification.UPDATA_WEAPON_INFO2, notification.Body );}
}
using PureMVC.Interfaces;
using PureMVC.Patterns.Command;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//-------------------------------
//-------功能: 受伤命令
//-------创建者:         -------
//------------------------------public class HurtCommand : SimpleCommand
{public override void Execute(INotification notification){base.Execute(notification);Debug.Log("玩家受伤的命令开始执行");PlayerProxy playerProxy = Facade.RetrieveProxy(PlayerProxy.NAME) as PlayerProxy;if (playerProxy != null){//playerProxy.LevUp(); //自己将数据升级// playerProxy.SavaUp(); //数据保存SendNotification(PureNotification.UPDATA_ROLE_INFO, playerProxy.Data as PlayerDataObj); //发送角色信息更新通知SendNotification(PureNotification.PLAYER_INJURY, notification.Body);}}
}

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031775.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

认识下MapReduce

&#x1f50d; 什么是MapReduce&#xff1f; MapReduce是一种分布式计算模型&#xff0c;最初由Google提出&#xff0c;用于处理大规模数据集的并行计算。它将数据处理任务分解成独立的Map和Reduce两个阶段&#xff0c;以实现分布式计算和并行化处理。Map阶段负责将输入数据映…

Web3Tools - 助记词生成

Web3Tools - 助记词生成工具 本文介绍了一个简单的助记词生成工具&#xff0c;使用 React 和 Material-UI 构建。用户可以选择助记词的语言和长度&#xff0c;然后生成随机的助记词并显示在页面上 功能介绍 选择语言和长度&#xff1a; 用户可以在下拉菜单中选择助记词的语言&…

头歌实践教学平台:CG1-v1.0-点和直线的绘制

第1关&#xff1a;OpenGL点的绘制 一. 任务描述 根据下面要求&#xff0c;在右侧修改代码&#xff0c;绘制出预期输出的图片。平台会对你编写的代码进行测试。 1.本关任务 熟悉编程环境&#xff1b; 了解光栅图形显示器的特点&#xff1b; 了解计算机绘图的特点&#xff1b…

vivado 配置存储器支持-Artix-7 配置存储器器件

配置存储器支持 本章主要讲解 Vivado 软件支持的各种非易失性器件存储器。请使用本章作为指南 &#xff0c; 按赛灵思系列、接口、制造商、 密度和数据宽度来为您的应用选择适用的配置存储器器件。 Artix-7 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 A…

苹果电脑MAC清理系统空间工具CleanMyMacX4.15.3中文版下载

苹果电脑以其出色的性能、优雅的设计和高效的操作系统而受到许多用户的喜爱。然而&#xff0c;随着时间的推移和使用量的增加&#xff0c;你可能会发现你的Mac开始变得缓慢和响应迟缓。这通常是因为硬盘空间被大量占用&#xff0c;影响了系统的整体性能。幸运的是&#xff0c;有…

maven的安装与配置(超详细)

在Java开发中&#xff0c;配置Maven环境有几个重要的原因&#xff1a; 依赖管理&#xff1a;Maven 是一个强大的依赖管理工具&#xff0c;它能够帮助开发人员轻松地管理项目所需的各种第三方库和组件。通过在项目的 Maven 配置文件&#xff08;pom.xml&#xff09;中定义依赖&…

数据结构与算法学习笔记六-二叉树的顺序存储表示法和实现(C语言)

目录 前言 1.数组和结构体相关的一些知识 1.数组 2.结构体数组 3.递归遍历数组 2.二叉树的顺序存储表示法和实现 1.定义 2.初始化 3.先序遍历二叉树 4.中序遍历二叉树 5.后序遍历二叉树 6.完整代码 前言 二叉树的非递归的表示和实现。 1.数组和结构体相关的一些知…

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景场景说明红黑树原理判断代码Dictionary知识点相关文章 背景 最近…

六西格玛遇上AI:质量提升进入“快车道”

人工智能&#xff08;AI&#xff09;与六西格玛管理方法——正在慢慢接近我们的视野中&#xff0c;预示着在质量管理中一场改革重大改革将要到来。 AI&#xff0c;作为科技的前沿&#xff0c;正以其强大的数据处理能力和机器学习能力&#xff0c;为质量管理提供全新的视角。它…

将来会是Python、Java、Golang三足鼎立吗?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 软件工程里没有银弹&#xff…

leetcode刷题指南

本文我将分享给大家一套我自己使用良久并觉得非常高效的 学习论&#xff0c;它可以运用到 Leetcode 上的刷题&#xff0c;也可以 generalize 到生活中涉及到学习以及记忆的方方面面。当然&#xff0c;本文将以 Leetcode 刷题为 case study 去进行讲解。 更具体一点, 我会教大家…

2024年学浪视频如何导出到本地

在数字时代的浪潮中&#xff0c;知识的传递如同星辰般璀璨&#xff0c;而学浪视频则是那座连接天地的桥梁。2024年&#xff0c;我们站在科技的巅峰&#xff0c;眺望着知识的海洋&#xff0c;渴望将那些波光粼粼的智慧片段&#xff0c;一一捕捉&#xff0c;珍藏于心。想象一下&a…

day07beef-xss之根据beef-xss获取cookies

1.安装 apt-get update apt-get install beef-xss 若报错运行不了尝试 apt remove ruby apt remove beef-xss apt-get install ruby apt-get install ruby-dev libpcap-dev gem install eventmachine apt-get install beef-xss 2.运行 beef-xss 运行成功会自动弹出浏览框。 攻…

天猫最热销的三款随身WiFi,哪一款直播最好用?2024公认最好的随身WiFi,天猫上的随身wifi是正规产品吗

近期有小伙伴问我&#xff1a;“小编、小编我要当户外博主了&#xff0c;想买一个随身WiFi&#xff0c;但是天猫榜单前三的随身WiFi自己都没有听说过&#xff0c;到底入手哪个比较好&#xff1f;”三款随身WiFi呢&#xff0c;分别是格行随身WiFi、迅优随身WiFi、小米随身WiFi&a…

UEC++ FString做为参数取值时报错error:C4840

问题描述 用来取FString类型的变量时报错&#xff1a; 问题解决 点击错误位置&#xff0c;跳转到代码&#xff1a; void AMyDelegateActor::TwoParamDelegateFunc(int32 param1, FString param2) {UE_LOG(LogTemp, Warning, TEXT("Two Param1:%d Param2:%s"), param…

微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)

文章目录 背景实现步骤&#xff1a;1、我们先在utils目录中创建tab-service.js文件&#xff0c;写上全局的数据及方法&#xff1b;2、在app.json文件中配置导航信息3、根目录下创建custom-tab-bar目录4、编写custom-tab-bar组件4.1、custom-tab-bar/index.wxml4.2、custom-tab-…

政务网离线安装python3及其依赖手册

文章目录 python安装及环境配置gcc安装make安装python3安装pip安装 测试测试python3报错:ModuleNotFoundError: No module named _ctypes’测试pip3报错“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.” 依赖库…

项目经理有哪些常见的沟通技巧?

项目经理有哪些常见的沟通技巧&#xff1f; 项目管理的核心之一是沟通。有效的沟通技巧对于确保项目团队成员之间的合作、项目信息的准确传达以及项目目标的顺利实现至关重要。一个号的项目管理工具可以让我们事半功倍&#xff0c;结合项目管理工具zz-plan 来探讨一些项目经理…

2024年第九届数维杯大学生数学建模挑战赛C 题解题思路1.0版本

题目分析&#xff1a; 问题背景&#xff1a;天然气水合物作为一种高效的清洁后备能源&#xff0c;其资源量评估对未来能源开发极为重要。 具体任务&#xff1a; 0.数据预处理 首先将txt中的数据合并到表格里方便后续操作&#xff0c;从Excel文件导入数据&#xff0c;清洗数…

【机器学习】逻辑回归:智能垃圾邮件分类实例

逻辑回归&#xff1a;智能垃圾邮件分类的利器 一、引言二、逻辑回归概述三、垃圾邮件分类实例数据准备特征选择与建模 四、总结与展望 一、引言 随着互联网的迅猛发展&#xff0c;电子邮件已成为人们日常生活和工作中不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;垃…