首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一得到在协同线中设置的值

统一得到在协同线中设置的值
EN

Stack Overflow用户
提问于 2018-07-16 21:02:06
回答 1查看 101关注 0票数 0

我有一个播放器类,它有一个public float reviveTimer。因此,当一名玩家被击倒时,另一名玩家可以去唤醒他们,这会为被击倒的玩家启动一个协同线,以增加复活计时器,直到恢复到10。

有一种情况是,如果一个玩家去复活被击倒的玩家,5秒后,第二个玩家来复活那个被击倒的玩家,在第一个玩家离开1秒后,第二个玩家应该在剩下6秒(5+1)的时间内继续恢复过程,而不是在最初的开始离开后重新启动计时器。所以,当第二个玩家进来让被击倒的玩家复活时,他们需要知道复活的计时器是5秒。

因此,我做一些像timer = downedPlayer.reviveTimer;这样简单的事情。但是,无论实际计时器设置为什么,这总是返回0,就好像我无法在协同线中检索reviveTimer设置的内容一样。

那么,如何检索在协同线中设置的reviveTimer的值呢?

编辑:

按要求添加代码。当玩家被击倒时,这就是被击倒的玩家运行的协同线。

代码语言:javascript
复制
    IEnumerator ReviveMeTimer()
    {
        while (reviveTimer < 10)
        {
            reviveTimer += Time.deltaTime;
            reviveIndicatorTimer.text = ((int)reviveTimer).ToString();
            reviveIndicatorImage.fillAmount = reviveTimer / 10;
            yield return null;
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-16 21:30:49

被击倒的玩家应该储存复活计时器。复活玩家应该调用一个public revive()方法来获取被击倒的玩家的计时器。恢复方法应该检查计时器上的剩余时间,并相应地更新它。恢复方法应该从被击倒的玩家的代码中调用。这样,被击倒的玩家负责在内部维护自己的计时器,而其他玩家则通过公共方法访问它。如果您使用协同线来处理计时,只需让coroutines (在被击落的播放器中)访问它的计时器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51370052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档