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;
}
}
我想添加到我的项目 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;
}
}