Unity通用Buff系统,Buff编辑器(1,理论篇)(技能系统之Buff篇)

这篇具有很好参考价值的文章主要介绍了Unity通用Buff系统,Buff编辑器(1,理论篇)(技能系统之Buff篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@TOC

Buff系统是指给玩家或NPC提供临时的增益效果的一种机制。它可以通过提升玩家角色的能力、增加属性值、提供额外技能或提供其他有益效果来改变游戏的动态。以下是一些关键的Buff系统设计方面:

  1. Buff类型:Buff的类型可以包括增加攻击力、防御力、生命恢复速度、移动速度等等。

  2. Buff来源:Buff可以来源于多种途径,比如装备、技能、道具或环境效果等。不同类型的Buff来源应该具有各自的特性和获取方式。

  3. Buff持续时间和层数:Buff可以有持续时间的限制或叠加层数的限制。持续时间较短的Buff可以使玩家在短时间内发挥更强大的能力,而叠加的Buff则可以给予更长时间的影响。

  4. Buff堆叠和冲突:有些游戏中允许同类型的Buff叠加,以增加效果的强度,而有些游戏中可能不允许Buff叠加,只能由更强力的Buff来覆盖较弱的Buff。此外,也需要考虑是否存在不同Buff之间的冲突。

  5. Buff的可见性和反馈:在游戏中,玩家需要清楚地知道何时获得了Buff效果和剩余时间。提供一种合适的UI元素或特效来显示Buff状态可以增强玩家的掌握感,使玩家更好地利用Buff的优势。

我们先来看看我们的Buff编辑器外观如下图( 在此基础上,我们可以很方便的扩展)
项目buff,Unity,游戏设计,unity,编辑器,游戏引擎

我们再来思考,游戏中,哪些对象可能拥有Buff

  1. 玩家角色:Buff系统最常见的应用是给予玩家角色临时增益效果。这可以是通过装备、技能、任务或其他方式实现。玩家角色可以获得各种属性提升、增加技能效果或者其他特殊能力来增强战斗力或者提升生存能力。
  2. 敌对NPC:在某些游戏中,敌对NPC也可以拥有Buff效果以增加其挑战性。这可以是增加攻击力、防御力、生命值回复速度或其他特殊技能,使它们更难被击败。
  3. 友方NPC:在一些团队合作或多人游戏中,友方NPC也可以受益于Buff效果。这可以是提升其攻击力、防御力或者治疗能力,以更好地支持玩家队伍。
  4. 友方单位(宠物、仆从等):一些游戏允许玩家拥有宠物或仆从,它们也可以通过Buff效果变得更强大。这可以是提升宠物的攻击力、生命值或其他特殊技能,让宠物更能参与战斗。
  5. 环境物体:在某些游戏中,特定的环境物体可以提供Buff效果。例如,某些区域的气候或地形可能会给玩家提供额外的力量、恢复速度加快或其他特殊效果。

谁来管理Buff,谁拥有BuffManager

  1. 共享BuffManager:所有游戏对象共用一个BuffManager。这种设计适用于全局性的Buff效果,例如游戏中的全局增益或全局减益效果。共享BuffManager可以集中管理所有Buff,减少资源消耗和管理复杂度。游戏对象可以通过BuffManager进行Buff的添加和移除,来获取或取消相应的效果。

  2. 单独BuffManager:每个游戏对象拥有自己的BuffManager。这种设计适用于需要为每个对象单独管理Buff效果的情况。每个游戏对象都有自己的Buff列表和Buff持续时间,可以独立地激活、更新和移除Buff效果。这种设计给予了游戏对象更多的自由度和灵活性,可以针对每个对象设计独特的Buff效果。

2种方式的优劣
共享BuffManager的优点:

  1. 资源效率高:共享BuffManager可以减少系统资源的占用,因为所有游戏对象共用同一个BuffManager,无需为每个对象额外创建和管理BuffManager。

  2. 管理简单:共享BuffManager集中管理所有Buff效果,简化了Buff的添加、移除和更新过程,降低代码复杂性和维护成本。

  3. 全局性效果:适用于对全局性效果进行控制的情况,比如全局增益或减益效果。

单独BuffManager的优点:

  1. 灵活个性化:每个游戏对象拥有自己的BuffManager,可以实现个体对象的独特Buff效果,增加游戏的多样性和个性化。

  2. 自由控制:每个对象独立管理自己的Buff,可以自由地激活、更新和移除Buff效果,提供更精细的控制和逻辑实现。

  3. 可扩展性强:每个对象都有自己的BuffManager,可以根据需要添加其他管理器,实现更复杂的游戏效果。

Buffmanager的核心方法

  1. 添加Buff:可以向BuffManager中添加新的Buff效果。这些Buff可以是预先定义的,也可以在游戏中动态创建。

  2. 移除Buff:可以从BuffManager中移除已经失效或不需要的Buff效果。

  3. 更新Buff效果:BuffManager会在游戏中每一帧或固定的时间间隔内更新Buff效果,以确保其持续时间正确计算,并应用其效果。

  4. 检测Buff冲突:有时候多个Buff的效果可能会产生冲突,BuffManager可以检测并解决这些冲突,以保证游戏的平衡和公平性。

Buff的机构 数据层,逻辑层,渲染层

  1. 数据层(Data Layer):数据层主要负责存储和管理Buff的相关数据,包括Buff的效果、持续时间、目标对象等。数据层可以使用数据结构(例如数组、列表、字典等)来存储和组织Buff数据,同时提供操作接口(如添加、移除、更新等)供逻辑层和渲染层使用。

  2. 逻辑层(Logic Layer):逻辑层是Buff的核心处理层,负责处理Buff的激活、更新和失效逻辑。逻辑层根据游戏的规则和设计,控制Buff的生命周期、影响目标对象的属性或行为,以及处理Buff的交互和冲突。逻辑层可以通过与数据层交互,获取和修改Buff的数据,同时与渲染层协调展示Buff效果。

  3. 渲染层(Rendering Layer):渲染层是用于展示Buff效果的层级,通常定义了Buff的可视化表现形式,比如特效、光环、图标等。渲染层负责根据逻辑层的指令和数据,将Buff效果实时渲染到游戏画面中,使玩家能够直观地感知和识别Buff的存在和影响。

那么我们已经有了Buff系统的完整理论,下一篇博客,我们用代码来实现这个Buff系统,并制作一个Demo。
注: 本文参考,且引用了铸梦老师的设计思想文章来源地址https://www.toymoban.com/news/detail-854809.html

到了这里,关于Unity通用Buff系统,Buff编辑器(1,理论篇)(技能系统之Buff篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity编辑器扩展 | 编辑器扩展基础入门

    前言 当谈到游戏开发工具,Unity编辑器是一个备受赞誉的平台。它为开发者提供了一个强大且灵活的环境,使他们能够创建令人惊叹的游戏和交互式体验。 然而,Unity编辑器本身也是可以扩展和定制的,这为开发者提供了进一步提升工作流程和增强功能的机会。 在Unity 编辑器

    2024年02月10日
    浏览(71)
  • 【Unity编辑器扩展】 | 编辑器扩展入门基础

    前言 当谈到游戏开发工具,Unity编辑器是一个备受赞誉的平台。它为开发者提供了一个强大且灵活的环境,使他们能够创建令人惊叹的游戏和交互式体验。 然而,Unity编辑器本身也是可以扩展和定制的,这为开发者提供了进一步提升工作流程和增强功能的机会。 在Unity 编辑器

    2024年02月10日
    浏览(79)
  • Unity 可视化节点编辑器(GraphView、编辑器扩展)

      前几天把导师的项目打包发布交了一稿,这半个星期除了再把项目缝缝补补外(说实话项目做到后边实在有些无聊,都是些琐碎的东西而且自己也学不到什么,纯粹是 浪费 消磨时间)无聊逛Unity商店发现了个有意思的东西,说实话一开始我以为只是单纯绘制的2D动画:

    2024年02月12日
    浏览(59)
  • 小迪安全33WEB 攻防-通用漏洞&文件上传&中间件解析漏洞&编辑器安全

    # 知识点: 1 、中间件安全问题 2 、中间件文件上传解析 3 、 Web 应用编辑器上传 编辑器也就是第三方插件,一般都是文件上传漏洞 # 详细点: 1 、检测层面:前端,后端等 2 、检测内容:文件头,完整性,二次渲染等 3 、检测后缀:黑名单,白名单, MIME 检测等 4 、绕过技

    2024年03月16日
    浏览(59)
  • Unity编辑器紫色

    紫色原因是因为编辑器内跑了其他平台的shader兼容性导致的,需要动态的去修改shader,主要用到Unity的api :  Shader.Find(shaderName); 具体的工具代码如下: Shader的添加形式大概有两种: 跟随AssetBundle 打进包里面,可以直接使用       自建材质  

    2024年02月03日
    浏览(52)
  • 修改unity代码编辑器

    将   Unity  自带的 MonoDevelop  替换成微软的 VS  2017 编辑器。 操作步骤 : 第一步:选择Edit选项卡下的Preferences..选项 第二步:选择External Tools 第三步:修改右侧的External Script Editor,选择VS2017  有的小伙伴可能下拉框中没有VS2017选项,没关系,点击Brower..,找到VS2017的应用程序

    2024年02月11日
    浏览(45)
  • Unity 编辑器常用方法

    自动根据RuntimeInitializeLoadType选择一个时机执行。静态方法 AfterSceneLoad 在场景加载之后初始化子系统。这意味着子系统将在场景加载完成后进行初始化,并在场景加载后的脚本执行时可用。 BeforeSceneLoad 在场景加载之前初始化子系统。这意味着子系统将在场景加载之前进行初始

    2024年02月07日
    浏览(50)
  • Unity编辑器扩展(外挂)

    每日一句:未来的样子藏在现在的努力里 目录 什么是编译器开发 C#特性[System.Serializable] 特殊目录 命名空间 /*检视器属性控制*/     //添加变量悬浮提示文字     //给数值设定范围(最小0,最大150) //指定输入框,拥有5行 //默认显示5行,最多显示10行内容,再多用滚动条控

    2024年01月24日
    浏览(83)
  • Unity编辑扩展:功能篇之Json数据编辑器

    前言 编辑器扩展算是比较纯粹的功能开发,基本没有什么理论知识,都是一些 Unity 相关接口的使用与数据类型的设计操作等。在本篇文章主要的文字描述基本都是在做代码解释,为了使内容接受度更高,我会尽量描述到代码结构中的每个细节。如果有对此不太了解又很感兴

    2024年02月06日
    浏览(98)
  • Unity编辑器开发——EditorWindow

    官方文档:EditorWindow - Unity 脚本 API EditorWindow  继承自  ScriptableObject 1.静态变量 变量名 官方解释 使用场景 focusWindow 当前已获得键盘焦点的 EditorWindow。(只读) mouseOverWindow 当前在鼠标光标下的 EditorWindow。(只读) 2.变量 变量名 官方解释 使用场景 titleContent 用于绘制 Edi

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包