E企盈营销工具技术服务商 热线:4006-838-530

Unity将满足特定条件的子对象设置其它的富阳市E企盈小程序父物体

有这样一个需求 ,所有子物体都拥有 m_bSelected 这样一个 bool 变量,当其中有值为true 时,将它们移动到 PlayCardPanel 下 Card.cs        public bool m_bSelected = false; // 卡牌是否被选中        /// summary        /// 将牌打出        /// /summary        public void SetRemoveCard()        {            if (!m_bSelected) return; // 没有被选择的牌不执行下面的操作            transform.GetComponentBoxCollider2D()开通西装小程序电话:4006-838-530.enabled = false; // 打出的牌不再具有碰撞体            transform.SetParent(m_playCardPanel); // 移动到其他父物体        }

这样调用是不对的 ,这样调用是不对的, 这样调用是不对的 重要是事说三遍//这样调用是不对的  for (int i = 0; i transform.childCount; i++)                {                    transform.GetChild(i).GetComponentCard().SetRemoveCard();                }

正确做法(如果有更好的方法 @ me)1. 从最后一个往上移除 for (int i = transform.childCount-1; i = 0; i--)                {                    transform.GetChild(i).GetComponentCard().SetRemoveCard();                    m_listCurrentCards.Remove(transform.GetChild(i).GetComponentCard());                }

2.m_listCurrentCards 存储的是子对象上的 Card 类                ListCard m_listCurrentTempCards = m_listCurrentCards                    .Where(a = a.m_bSelected == true).ToList();                for (int i = 0; i m_listCurrentTempCards.Count; i++)                {                    m_listCurrentTempCards[i].SetRemoveCard();                    m_listCurrentCards.Remove(m_listCurrentTempCards[i]);                }

3. 更简洁的方式foreach (var item in m_listCurrentCards)                {                    item.SetRemoveCard();                }                m_listCurrentCards = m_listCurrentCards   开通色丁小程序电话:4006-838-530             .Where(a = a.m_bSelected !开通网页设计小程序电话:4006-838-530= true).ToList();

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » Unity将满足特定条件的子对象设置其它的富阳市E企盈小程序父物体
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

模王系统开发

联系我们升级日志

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏