所有理解仅为个人理解;
Scriptable Object的一般用法:
在游戏中,我们可能会设计很多不一样的道具,而这些道具往往都具有相同的几个属性,特别是在卡牌游戏或者是Rouge类游戏中,为了方便管理游戏道具,可以使用Scriptable Object来把道具归类为一种共用属性的游戏对象,只需要更改每一个道具的对应属性即可实现多种道具的区分。
下面以常规卡牌游戏的卡牌道具为例,设计卡牌具有攻击力、生命值、消耗花费等属性;
1、编写卡牌类脚本,用于储存卡牌的属性信息,并且可以通过create来创建一个独立的卡牌道具:
using UnityEngine;
[CreateAssetMenu(menuName = "Card")]
public class Card : ScriptableObject
{
public string cardName;
public int damagePoint;
public int healthPoint;
public int costPoint;
public Sprite sprite;
public enum CardType
{
RED,
BLUE,
GREEN
}
public CardType cardType;
}
2、在Project面板中,右键Create新建一个Card对象,并在Inspector栏中修改其具体属性参数。
3、对需要装载卡牌属性的游戏对象,添加一个脚本来接收上一步的Card类对象:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CardObject : MonoBehaviour
{
public Card card;
}
4、最后就是对这个卡牌属性的引用:
Card cardObject;
private void Start()
{
cardObject = this.GetComponent<CardObject>().card;
}
个人认为的优势:当具有大量的同属性类型道具时,使用脚本化对象可以便于我们在后期进行管理和数值调整,并且可以让整个工作流程清晰明了。