根据UTC时间更改值?

时间:2018-02-27 01:04:16

标签: c# unity3d

如何根据时间改变浮动值?

例如。我们有:

public float usdValue = 1f;

如何使美元的价值根据UTC时间随机变化?喜欢+或 - 在它的时间值的-20%到+ 75%之间?虽然它的价值每1-5分钟变化一次?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

这将随机生成1-5分钟(60-300秒)和值修改器之间的间隔,范围在20-75%之间。虽然重置后经过的时间小于间隔,但该值保持不变。一旦间隔时间过去,它将重新计算。

using System;
using UnityEngine;

public class USDValueRandomizer : MonoBehaviour {

    public float usdValue = 1;
    public float ModifiedUSDValue = 1;

    public int MinIntervalTimeInSeconds = 60;
    public int MaxIntervalTimeInSeconds = 300;

    public float MinValueModifier = 0.2f;
    public float MaxValueModifier = 0.75f;

    private DateTime IntervalStart;
    private int IntervalTimeInSeconds;
    private float ValueModifier;

    private void Start()
    {
        RecalculateValue();   
    }

    private void FixedUpdate()
    {
        TimeSpan elapsedTime = DateTime.UtcNow - IntervalStart;

        if (elapsedTime.Seconds >= IntervalTimeInSeconds)
            RecalculateValue();

        ModifiedUSDValue = usdValue * ValueModifier;
    }

    private void RecalculateValue()
    {
        IntervalStart = DateTime.UtcNow;
        IntervalTimeInSeconds = Mathf.RoundToInt(UnityEngine.Random.Range(MinIntervalTimeInSeconds, MaxIntervalTimeInSeconds));
        ValueModifier = UnityEngine.Random.Range(0.2f, 0.75f);
    }
}

答案 1 :(得分:1)

我会把这个答案扔到那里 - 它适用于C#,但它与Unity3d完全无关(我对Unity3d一无所知),所以也许还有其他一些需要修改。

如果我理解正确,您希望将import logging.config import yaml with open('./test.yml', 'r') as stream: config = yaml.load(stream) logging.config.dictConfig(config) (货币应始终存储在decimal)中的值更改为介于decimal和{之间的随机值{1}}它的当前值,您希望这是在-20%+76%分钟之间的随机间隔发生的。

如果这是正确的,一种方法是使用1

5

<强>输出

请注意,对于示例输出,我将值更改为介于1到15秒之间,因为我不想等待那么久!

System.Threading.Timer

Example Console Output