Unity中如何为Card ScriptableObject添加召唤时触发的卡牌效果
实现步骤
1. 修复并调整EffectManager
先处理现有EffectManager的笔误+改为单例方便全局调用,同时把私有方法mill改为公有,否则外部无法触发:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EffectManager : MonoBehaviour { // 单例实例,全局可直接访问 public static EffectManager Instance; Deck dk; Hand hnd; Player p1; // 修复原代码笔误:Awake里错误赋值给了不存在的jg1,这里统一用p1 private void Awake() { // 单例初始化 if (Instance == null) Instance = this; else Destroy(gameObject); dk = FindObjectOfType<Deck>(); hnd = FindObjectOfType<Hand>(); p1 = FindObjectOfType<Player>(); } public void Draw(int num) { p1.DrawCards(num); } public void Discard() { hnd.hand.RemoveAt(0); } // 改为public,允许外部调用 public void Mill() { dk.deck.RemoveAt(0); } }
2. 为Card添加效果关联逻辑
首先定义卡牌效果的枚举,方便在Inspector面板直接为每个卡牌选择对应效果:
// 可以单独放在一个脚本里,也可以直接写在Card脚本上方 public enum CardEffectType { None, // 无效果 Draw, // 抽卡 Discard, // 弃牌 Mill // 爆牌 }
然后修改Card的ScriptableObject,添加效果相关字段和触发方法:
using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "New Card", menuName = "Card")] public class Card : ScriptableObject { public string m_cardName; public Sprite m_sprite; public int m_manaCost; public int m_health; public int m_attack; [Header("卡牌效果设置")] public CardEffectType effectType; // 效果参数,比如抽卡数量就存在这里 public int effectParam = 1; // 召唤时触发的效果方法 public void OnSummon() { switch (effectType) { case CardEffectType.Draw: EffectManager.Instance.Draw(effectParam); break; case CardEffectType.Discard: EffectManager.Instance.Discard(); break; case CardEffectType.Mill: EffectManager.Instance.Mill(); break; case CardEffectType.None: default: break; } } }
3. 在召唤逻辑中触发效果
在你现有卡牌召唤成功的逻辑位置,调用当前被召唤卡牌的OnSummon方法即可,示例逻辑如下:
// 你的召唤卡牌方法示例 public void SummonCard(Card cardToSummon) { // 原有召唤逻辑:扣除费用、生成卡牌实体、上场展示等 // ... // 新增:触发卡牌入场效果 cardToSummon.OnSummon(); }
可选进阶优化
如果后续需要支持一张卡带多个效果、或者自定义复杂效果,可以改用效果ScriptableObject方案:定义一个基类BaseCardEffectSO,写虚方法Execute(),每个效果单独做继承自基类的SO,Card里存List<BaseCardEffect>,触发时遍历执行即可,灵活度更高。
内容的提问来源于stack exchange,提问作者Cobalixe
相关产品推荐
相关产品推荐

