Unity:向脚本化对象添加自定义函数

Unity: adding custom function to Scriptable Object

我想添加到我的项目 CardSO - 一个可编写脚本的对象。我想给它起个名字,点数和一些卡片的特殊行为。如何向 SO 字段添加函数? 对于大多数卡片,它可以是空的(或者只是 returning 0),我希望我能写一个函数来获取 List 和 return int。 有什么想法吗?

我当前的代码布局:

using UnityEngine;

[CreateAssetMenu(fileName = "CardSO", menuName = "New CardSO", order = 0)]
public class CardSO : ScriptableObject
{
    public string name;
    public int points;
    public Sprite Sprite;
    
    // public int SpecialBehavior(List<CardSO>);
}

谢谢!

嗯……就这么实现吧。如果你需要大多数没有它的卡片,为什么不使用基础 class 并使方法 virtual

// Whatever shall be the default behavior
public virtual int SpecialBehavior(List<CardSO> cards) => -1;

然后做一个特殊的卡片子class可以override这个方法和return任何你需要的

[CreateAssetMenu]
public class SpecialCardSO : CardSO
{
    public override int SpecialBehavior (List<CardSO> cards)
    {
        // or whatever
        return cards.Length;
    }
}