public IEnumerator PlayCard(){//还是不正确 应该弹出是否要打牌EventCallback0 action = () =>{IsState = true;};PanelManager.Inst.Warn("是否要打牌!", action);float delayTime = 200f;while (PanelManager.Inst.GetWarnState() != 0){delayTime -= 0.1f;yield return new WaitForSeconds(0.1f);}if (IsState){PanelManager.Inst.EnterState(0);float time = 10;while (time > 0){//关闭界面//可能出现点数不足的情况if (cantSelect){PanelManager.Inst.Warn($"点数不足,无法打出该牌,请重新选择");cantSelect = false;yield return new WaitForSeconds(1);}PanelManager.Inst.Warn($"请选择现有的牌打出一张!\n倒计时{(int)(time -= 0.1f)}s");yield return new WaitForSeconds(0.1f);if (!IsState){CurrentPoint -= selectCard.costPoint;PanelManager.Inst.CloseWarn();currHandCardNum--;PanelManager.Inst.ExitState();yield break;}}//没有打牌IsState = false;PanelManager.Inst.CloseWarn();PanelManager.Inst.ExitState();yield break;}}public IEnumerator AutoSendCard(){if (libraryModel == null){yield break;}ReGetLib();while (UnityRandom.Inst.GetWeightedIndex(weights) != -1){RoundCount++;PanelManager.Inst.Warn($"当前回合数{RoundCount}");yield return new WaitForSeconds(1f);PanelManager.Inst.CloseWarn();yield return StartCoroutine(DiscardCard(DataManager.Inst.autoSendCardNum));if (CurrentPoint >= DataManager.Inst.allPoint){CurrentPoint = DataManager.Inst.allPoint;}else{int add = CurrentPoint >= DataManager.Inst.limit ? DataManager.Inst.limitAfterAdd : DataManager.Inst.limitBeforeAdd;CurrentPoint += add;//判断是否超过if (CurrentPoint >= DataManager.Inst.limit){yield return StartCoroutine(PlayCard());}}//yield return new WaitForSeconds(timer);}}public IEnumerator DiscardCard(int num){int overFlow = (currHandCardNum + DataManager.Inst.autoSendCardNum) - DataManager.Inst.maxHandCard;if (overFlow > 0){DiscardState = true;PanelManager.Inst.EnterState(1);float time = 1000;while (time > 0){PanelManager.Inst.Warn($"必须要丢弃{overFlow}张卡!");yield return new WaitForSeconds(0.1f);if (!IsState){overFlow--;currHandCardNum--;if (overFlow <= 0){DiscardState = false;PanelManager.Inst.ExitState();SendCard(num);yield break;}else{IsState = true;  //需要继续丢弃}}}}else{SendCard(num);}}

用unity协程写的发牌程序相关推荐

  1. Unity 协程Coroutine综合测试

    Unity 协程Coroutine综合测试 1 using UnityEngine; 2 using System.Collections; 3 using System.Text; 4 5 publ ...

  2. Unity(协程是什么,怎么用)

    c#协程 概:早就听闻Unity协程有必要学一手,但我还是搁置了好久,直到这个搓东西的时候被迫用了多线程发现解决不了,百度一手得知我不得不学一下协程了.在搜集了一些资料后发现知乎大佬的博文香的一批(我 ...

  3. unity 协程特点

    协程 一. Unity中使用协程 1. 什么是协程 2. 如何使用 3. 协程的应用场景 创建补间动画 打字机效果 异步加载资源 4. 注意事项 二. Unity协程的底层原理 1. 协程本体:C#的 ...

  4. Unity协程那些事儿

    Unity协程那些事儿 1.什么是协程? 2.协程的使用 3.关于yield 4.关于IEnumerator/IEnumerable 5.从IEnumerator/IEnumerable到yield ...

  5. 【Unity】Unity协程(Coroutine)的原理与应用

    文章目录 前言 一.什么是协程 二.应用场景 1.异步加载资源 2.将一个复杂程序分帧执行 3.定时器 三.协程的使用 注意事项 四.Unity协程的底层原理 1. 协程本体:C#的迭代器函数 2. ...

  6. lua协程 unity_XLua 之 Lua 协程 与 Unity 协程互通

    前言: 最近在摸索用XLua 在 Unity 中进行全Lua 开发.然后就遇到了协程的问题.我想在 Lua 侧开启一个 Unity 的协程,该怎么做呢? 一开始我先去翻 XLua 的文档,我记得之前我 ...

  7. Unity协程(Coroutine)原理深入剖析再续

    Unity协程(Coroutine)原理深入剖析再续 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面已经介绍过对协程(Coroutine ...

  8. Unity 协程深入解析与原理

    先来直接放一段代码 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 p ...

  9. Unity协程实现分析以及Lua协程与Unity协程的混合使用

    1,节选翻译一篇stackoverflow关于Unity协程实现的讨论 - The big clues are in the C# version. Firstly, note that the re ...

  10. Unity协程(Coroutine)原理深入剖析

    Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网 ...

最新文章

  1. winrar远程代码执行漏洞复现(cve-2018-20250)
  2. Spring中获取Session的方法汇总
  3. 面试:整理面试中常被问到的8种数据结构
  4. codeUp 2031 To fill or not to fill 复杂贪心
  5. mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...
  6. 排序算法(二)--堆排序(JAVA)
  7. window下安装好postgreSQL 9.3用cmd命令进入数据库(搞的我这个菜鸟只剩半条命)...
  8. 触发full gc的条件
  9. GPS(北斗)拓展无线同步模块GSYN1000系列在电力、大坝、隧道、核电、密闭厂房的应用方案...
  10. 线性表--算法设计题2.25
  11. js刷新当前页面的几种方式
  12. 制作软盘镜像文件的几种方法
  13. 优秀的jquery插件
  14. 2019年1月《语音信号处理》期末考试
  15. dql聚合函数_sql聚合函数有哪些
  16. java switch语句_Java switch语句
  17. 2021-11-05 springMVC 错误:org.springframework.http.converter.HttpMessageNotWritableException No conve
  18. VMware是什么?
  19. 如何批量在excel中将中文转换为汉语拼音(Excel文字转拼音两种方法)
  20. css_使div中的文本自动换行

热门文章

  1. Eclipse — 快速生成提示代码和快速导包
  2. 7-1 字符串的冒泡排序 (20 分)
  3. Navicat for Mysql安装及破解教程
  4. 六、 抽象类与接口对比
  5. 去掉博客复制下来的代码的行号
  6. numpy中的broadcast
  7. 金融系统中BER-TLV的解析,更改、增加、删除TAG的实现
  8. 程序functionLua基础 小结(两个Lua程序示例)
  9. (转载)将h.264视频流封装成flv格式文件(二.开始动手)http://blog.csdn.net/yeyumin89/article/details/7932431...
  10. 被监控机上安装nagios插件和nrpe(nrpe添加为xinetd服务)