当前位置:   article > 正文

学习笔记:Unity 使用Scriptable Object制作装备&技能&卡牌_unity scriptobject用法

unity scriptobject用法

介绍

在你想制作一个技能的时候,一般情况下你需要有一个技能类,然后你需要实例化这个技能类,制作一个单例,填入不同的构造函数

而这个时候,就可以选择使用Scriptable Object,脚本化对象。
Scriptable Object在unity中的图标样式:
在这里插入图片描述
Scriptable Object简单来说就是个数据容器,它将实例化的对象都以脚本的方式存储在文件夹中。

以我现在做的项目为例简单介绍Scriptable Object的使用:

一,创建一个模板来定义每个对象包含的信息:

注意:此技能类是需要继承ScriptableObject,不需要挂载在任何gameobject上。因为是保存在文件夹当中,也可以利用此特性做到数据的储存。

using UnityEngine;

[CreateAssetMenu(fileName ="New Skill",menuName ="Skills/Minion")]
public class Skill:ScriptableObject
{
	[Header("技能名称")]
	public new string skillName;
	[Header("最小释放距离")]
	public int minDistance;
	[Header("最大释放距离")]
	public int maxDistance;
	[Header("立即伤害值/恢复值")]
	public int damage;
	[Header("技能图标")]
	public Sprite skillIcon;
	[Header("技能CD回合数")]
	public int CD;
	[Header("技能已经进入CD几回合")]//当nowCD==CD 技能可以释放
	public int nowCD;
	[Header("是否是个buff类技能")]
	public bool isDot;
	[Header("对谁释放的技能:0对自己,1对敌人")]
	public int isToEnemy;
	[Header("持续回合数")]
	public int keepRound;
	[Header("已经持续的回合数")]//当nowRound == keepRound 技能效果消失
	public int nowRound;
	[Header("增加/降低生命值")]
	public int addHp;
	[Header("增加/降低攻击力")]
	public int addPower;
	[Header("增加/降低防御力")]
	public int addDef;
	[Header("增加/降低攻击距离")]
	public int addAttackDistance;
	[Header("增加/降低移动距离")]
	public int addMoveDistance;
	[Header("是否是个群体技能")]
	public bool isAOE;
	[Header("群体技能最小范围")]
	public int aoeMinDistance;
	[Header("群体技能最大范围")]
	public int aoeMaxDistance;
	[Header("技能特效")]
	public GameObject skillEffects;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

二,从模板创建对象:

第一步完成之后,在Asset窗口点击右键–Create–Skills–Minion就可以创建ScriptableObject了。这个时候你只需要填值就可以了。每次新建一个Skill的ScriptableObject,都相当于新建了一个技能。可以把这个技能有关的任何数据都储存在里面。包括音乐,特效,谁可以释放,动画,持续几回合等等。而它的数据类型就是之前建的Skill类。
在这里插入图片描述
碎碎念

因为Scriptable Object的特性,在游戏中对Scriptable Object的更改,在游戏结束之后,也会保存下来。所以说游戏进行的过程中,应该用某些方法,将技能的scriptable Object中的数据复制一份作为临时数据。而游戏中操作和更改的都是临时数据。这样就会保证游戏结束的时候技能的Scriptable Object不会改变。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/112526
推荐阅读
相关标签
  

闽ICP备14008679号