用unity协程写的发牌程序
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协程写的发牌程序相关推荐
- Unity 协程Coroutine综合测试
Unity 协程Coroutine综合测试 1 using UnityEngine; 2 using System.Collections; 3 using System.Text; 4 5 publ ...
- Unity(协程是什么,怎么用)
c#协程 概:早就听闻Unity协程有必要学一手,但我还是搁置了好久,直到这个搓东西的时候被迫用了多线程发现解决不了,百度一手得知我不得不学一下协程了.在搜集了一些资料后发现知乎大佬的博文香的一批(我 ...
- unity 协程特点
协程 一. Unity中使用协程 1. 什么是协程 2. 如何使用 3. 协程的应用场景 创建补间动画 打字机效果 异步加载资源 4. 注意事项 二. Unity协程的底层原理 1. 协程本体:C#的 ...
- Unity协程那些事儿
Unity协程那些事儿 1.什么是协程? 2.协程的使用 3.关于yield 4.关于IEnumerator/IEnumerable 5.从IEnumerator/IEnumerable到yield ...
- 【Unity】Unity协程(Coroutine)的原理与应用
文章目录 前言 一.什么是协程 二.应用场景 1.异步加载资源 2.将一个复杂程序分帧执行 3.定时器 三.协程的使用 注意事项 四.Unity协程的底层原理 1. 协程本体:C#的迭代器函数 2. ...
- lua协程 unity_XLua 之 Lua 协程 与 Unity 协程互通
前言: 最近在摸索用XLua 在 Unity 中进行全Lua 开发.然后就遇到了协程的问题.我想在 Lua 侧开启一个 Unity 的协程,该怎么做呢? 一开始我先去翻 XLua 的文档,我记得之前我 ...
- Unity协程(Coroutine)原理深入剖析再续
Unity协程(Coroutine)原理深入剖析再续 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面已经介绍过对协程(Coroutine ...
- Unity 协程深入解析与原理
先来直接放一段代码 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 p ...
- Unity协程实现分析以及Lua协程与Unity协程的混合使用
1,节选翻译一篇stackoverflow关于Unity协程实现的讨论 - The big clues are in the C# version. Firstly, note that the re ...
- Unity协程(Coroutine)原理深入剖析
Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网 ...
最新文章
- winrar远程代码执行漏洞复现(cve-2018-20250)
- Spring中获取Session的方法汇总
- 面试:整理面试中常被问到的8种数据结构
- codeUp 2031 To fill or not to fill 复杂贪心
- mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...
- 排序算法(二)--堆排序(JAVA)
- window下安装好postgreSQL 9.3用cmd命令进入数据库(搞的我这个菜鸟只剩半条命)...
- 触发full gc的条件
- GPS(北斗)拓展无线同步模块GSYN1000系列在电力、大坝、隧道、核电、密闭厂房的应用方案...
- 线性表--算法设计题2.25
- js刷新当前页面的几种方式
- 制作软盘镜像文件的几种方法
- 优秀的jquery插件
- 2019年1月《语音信号处理》期末考试
- dql聚合函数_sql聚合函数有哪些
- java switch语句_Java switch语句
- 2021-11-05 springMVC 错误:org.springframework.http.converter.HttpMessageNotWritableException No conve
- VMware是什么?
- 如何批量在excel中将中文转换为汉语拼音(Excel文字转拼音两种方法)
- css_使div中的文本自动换行
热门文章
- Eclipse — 快速生成提示代码和快速导包
- 7-1 字符串的冒泡排序 (20 分)
- Navicat for Mysql安装及破解教程
- 六、 抽象类与接口对比
- 去掉博客复制下来的代码的行号
- numpy中的broadcast
- 金融系统中BER-TLV的解析,更改、增加、删除TAG的实现
- 程序functionLua基础 小结(两个Lua程序示例)
- (转载)将h.264视频流封装成flv格式文件(二.开始动手)http://blog.csdn.net/yeyumin89/article/details/7932431...
- 被监控机上安装nagios插件和nrpe(nrpe添加为xinetd服务)