Unity 从0开始编写一个技能编辑器_01_分析需求

这篇具有很好参考价值的文章主要介绍了Unity 从0开始编写一个技能编辑器_01_分析需求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

入职以来一直很想实现一个技能编辑器,在积累了一些经验以后,决定利用ScriptableObject开发一个,在此记录
1.简单的需求分析
在游戏开发中,技能系统是一个至关重要的组成部分。技能决定了游戏角色可以执行的各种动作,例如攻击、治疗、移动等。通常,技能由多个元素组成,包括技能效果(Effect)、技能触发条件(triggerr)、技能冷却时间(Cooldown)等。为了更好地管理和调整这些技能,我们需要一个可视化的编辑器。
2.粗略的实现哪些功能
Buff 类似计时器功能 startscript endscript delaytime(开始延时时间) lasttime(buff持续时间-1为永久) TrickTime(脚本执行间隔) TrickScript(持续时间内按间隔时间刷新执行的脚本)

Trigger 一些事件触发 触发条件 判断是否执行后续脚本 触发后执行的脚本,要在特定位置埋下事件

Effect 生成bullet 执行Script (设计一个skillbyEffect 凭此释放技能可以让怪物NPC靠Buff释放技能)

Bullet 子弹 子弹形态 链接track

Skill 技能应该具有各种属性,包括伤害、冷却时间、目标、范围等。编辑器需要允许用户定义这些属性,并且能够将 Effect、Buff 和 Bullet 与技能关联。

3.ScriptableObject的意义
可以创建多个不同类型的ScriptableObject,例如Skill、Buff、Effect、Bullet等,以满足不同的需求。
ScriptableObject的数据是独立的,它们不依赖于特定的场景或游戏对象。这使得技能可以轻松地跨不同场景和游戏对象共享和重用。
脚本化操作:可以通过脚本在运行时创建、修改和管理ScriptableObject。

例如

using UnityEngine;
using UnityEngine.Events;

[CreateAssetMenu(fileName = "New Skill", menuName = "Skill System/Skill")]
public class SkillSo : ScriptableObject
{
	[SerializeField]
	public SkillType skillType;

	[SerializeField]
	public AttackType attackType;

	[SerializeField]
	public float spiritCost;

	[SerializeField]
	public float damageRatio;

	[SerializeField]
	public float skillCD;

	public float lifeTime;

	public Vector3 direction;

	public float speed;

	public float damage = 1f;
}


[CreateAssetMenu(fileName = “New Skill”, menuName = “Skill System/Skill”)] 是一个特性(Attribute),用于在Unity编辑器中创建新的技能资产(Asset)。它指定了在Unity项目中创建新技能时的默认文件名和菜单路径。这使得在Unity编辑器中可以右键点击创建新技能,并将其保存为一个ScriptableObject。
下面一系列的 public 字段是用来存储技能的各种属性和参数。这些字段包括:

skillType:技能的类型,可能是一个自定义枚举类型 SkillType。
attackType:技能的攻击类型,可能是一个自定义枚举类型 AttackType。
spiritCost:使用技能所需的精力消耗。
damageRatio:技能的伤害比率。
skillCD:技能的冷却时间。
lifeTime:技能在游戏中存在的时间。
direction:技能的方向。
speed:技能的速度。
damage:技能的伤害值,默认为1。
后续我可能会扩展它和SkillType的枚举

在编写这段代码后即可右键创建so文件
Unity 从0开始编写一个技能编辑器_01_分析需求,unity,编辑器,游戏引擎

using System;

// 技能类型枚举
public enum SkillType
{
    MeteorSword,             // 陨剑术
    SkySword,           // 天剑
    SpeedBuff,          // 速度增益
    SwordRain,          // 剑雨
    WaterDrawSword,     // 提水剑
    None                // 无
}

一个简单的skillType枚举
Unity 从0开始编写一个技能编辑器_01_分析需求,unity,编辑器,游戏引擎
然后设计一个skill基类去读取和利用其中的信息

public abstract class SkillBase : MonoBehaviour
{
	public SkillSo so;

	public SkillType GetSkillType()
	{
		return so.skillType;
	}


	public AttackType GetAttackType()
	{
		return so.attackType;
	}


	public float SpiritCost()
	{
		return so.spiritCost;
	}


	public float DamageRatio()
	{
		return so.damageRatio;
	}


	public float SkillCD()
	{
		return so.skillCD;
	}


	protected void Awake()
	{
		so.sr = base.GetComponentInChildren<SpriteRenderer>();
	}




	protected virtual void SkillFinish()
	{
        UnityEngine.Object.Destroy(base.gameObject);
	}


}

后续应该在skillbase写一些逻辑去处理,例如对外提供skill图标让UImanager加载,对碰撞或范围内的敌人造成伤害。

在贴一个attackType

using System;

// 攻击类型枚举
public enum AttackType
{
    Metal,    // 金
    Wood,     // 木
    Water,    // 水
    Fire,     // 火
    Earth,    // 土
    Thunder,  // 雷
    Sword,    // 剑
    None      // 无
}

然后我会设计palyerManager去读取预制体身上实例的SkillSo文件进行相应的处理

今天就先分享到这,管他能不能用,先写了再说文章来源地址https://www.toymoban.com/news/detail-705435.html

到了这里,关于Unity 从0开始编写一个技能编辑器_01_分析需求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 手机python编辑器怎么用,手机编写python的编辑器

    本篇文章给大家谈谈手机python3.0编程软件怎么用,以及手机python编辑器怎么用,希望对各位有所帮助,不要忘了收藏本站喔。 Source code download: 本文相关源码 大家好,小编来为大家解答以下问题,在手机上编python程序用什么软件,手机写python编程用哪个软件,今天让我们一起

    2024年04月12日
    浏览(49)
  • 企升编辑器word编写插件

    面向用户群体 招投标人员,用统一的模板来编写标书,并最终合并标书。 项目经理,编写项目开发计划书,项目验收文档等。 开发人员,编写项目需求规格说明书、设计说明书、技术总结等文档。 其他文档编写工作量较多的岗位人员。 文档编写遇到的问题 现实工作中编写

    2024年02月13日
    浏览(48)
  • 【富文本编辑器实战】03 Vuex 的配置编写

    这里我们来看看官方网站是如何介绍 Vuex 的: 提示 这是与 Vue 3 匹配的 Vuex 4 的文档。如果您在找与 Vue 2 匹配的 Vuex 3 的文档,请在这里查看。 Vuex 是一个专为 Vue.js 应用程序开发的 状态管理模式 + 库 。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态

    2024年01月22日
    浏览(56)
  • 使用文本编辑器sublime text编写python代码

    上篇文章介绍了如何安装python程序,这次就讲讲如何用sublime来编写python代码 有的小伙伴可能会有疑问,为什么不选择pycharm来编写? pycharm写代码会有代码补全功能,而我们新手正是要在犯错误的过程中积累经验,所以呢在前期我们新手最好是使用sublime、notepad、vscode这类的文

    2024年02月11日
    浏览(66)
  • Unity编辑器扩展 | 编辑器扩展基础入门

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

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

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

    2024年02月10日
    浏览(84)
  • 手机编写python的编辑器,手机python3.8编程软件

    大家好,本文将围绕手机python3.0编程软件怎么用展开说明,手机编写python的编辑器是一个很多人都想弄明白的事情,想搞清楚手机python3.8编程软件需要先了解以下几个事情。 这篇文章主要介绍了手机python编辑器中颜色函数用法,具有一定借鉴价值,需要的朋友可以参考下。希

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

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

    2024年02月12日
    浏览(63)
  • 前端 富文本编辑器原理——从javascript、html、css开始入门

    大家好,我是yma16,本文分享关于前端 富文本编辑器原理——从javascript、html、css开始。 富文本编辑器 富文本编辑器是指具有格式化文本和图像编辑功能的文本编辑器 参考文档:https://w3c.github.io/selection-api/#abstract 全局属性 contenteditable 是一个枚举属性,表示元素是否可被用

    2024年02月08日
    浏览(50)
  • Unity编辑器紫色

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

    2024年02月03日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包