gpt4 book ai didi

c# - Unity 中的自定义日期和时间

转载 作者:行者123 更新时间:2023-11-30 21:26:33 25 4
gpt4 key购买 nike

我正在努力研究自定义日期控制系统。我有这个来提前使用 Unity:

        private void AdvanceTime() {
if (paused) return;
currentTimer -= Time.deltaTime * (fastForwarding ? fastForwardMultiplier : 1f);
if(currentTimer <= 0) {
currentTimer += dayDuration;
dayPassed++;
}
}

我在 Update 方法上调用此方法并且它有效。我的问题是,如何获得这样的自定义日期?对于我正在进行的项目,我将忽略月份,但会将季节(60 天)作为月份引入。如果我从一个随机日期开始,比如 13 Spring 420,我怎样才能得到我想要的?

我不知道这是否是一个合适的问题。实际上这是我第一次来这里。谢谢大家。

最佳答案

我不完全确定是什么 13 Spring 420意思是,但这是将天数转换为年/季节/日格式的方法。我假设 dayPassed是已经过去的总天数(复数)。

获取年/季/日格式的天数

我们将从获取年份开始,我们可以称它为year .为了得到我们想要的值,我们除以 dayPassed一年中的天数并向下舍入。如果我们做 integer division舍入已经为我们处理好了。

int year = dayPassed / amountOfDaysInYear;

要获得季节编号,我们需要将上次计算后的剩余天数(我们可以称此变量为 yearRemainder )除以季节长度(在您的例子中为 60)。我们可以用 remainder operator % 得到除法的剩余部分(也称为模运算符)。

int yearRemainder = dayPassed % amountOfDaysInYear;
int season = yearRemainder / amountOfDaysInSeason;

最后,剩余天数将只是上次计算的余数

int day = yearRemainder % amountOfDaysInSeason;

一个例子

我将通过一个示例对其进行简要介绍。假设我们正在尝试以年/季/日格式获取第 703 天。一年有 240 天,一个季节有 60 天。

year = 703 / 240           // = 2
yearRemainder = 703 % 240 // = 223
season = 223 / 60 // = 3
day = 223 % 60 // = 43

所以答案是今年2 , 季节 3 (0 索引)和日 43 .

我们可以通过确保年份、季节和日期相加来仔细检查。

2 * 240 = 480
3 * 60 = 180
43 * 1 = 43

480 + 180 + 43 = 703

希望对您有所帮助:)

关于c# - Unity 中的自定义日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59139563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com