Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建带有BC日期的勾号系统_C#_Unity3d - Fatal编程技术网

C# 创建带有BC日期的勾号系统

C# 创建带有BC日期的勾号系统,c#,unity3d,C#,Unity3d,我的代码目前通过在每个勾号后添加1到日期,您可以看到,这将根据月份等在必要时添加一个月/年。这比任何东西都更直观,因为所有游戏逻辑都将使用total days系统 然而,正如您所看到的,有许多不同的问题,即所有月份都是30天,与简单的DateTime方法相比,这是大量的代码。但是我的游戏设置在公元前1000年,所以我不能使用日期时间格式。我怎样才能避开这个问题 public Text timeText; public byte day = 1; public byte month = 1; p

我的代码目前通过在每个勾号后添加1到日期,您可以看到,这将根据月份等在必要时添加一个月/年。这比任何东西都更直观,因为所有游戏逻辑都将使用total days系统

然而,正如您所看到的,有许多不同的问题,即所有月份都是30天,与简单的DateTime方法相比,这是大量的代码。但是我的游戏设置在公元前1000年,所以我不能使用日期时间格式。我怎样才能避开这个问题

public Text timeText;

public byte day = 1;
public byte month = 1;
public short year = 1000;

public int totalYears = 1;
public int totalMonths = 1;
public int totalDays = 1;

[Range(0.1f, 5f)]
public float timeSpeed = 1f;
private float elapsedTime = 0;

public bool play = true;

private string[] monthNames = new string[13]
{
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December",
    "January"
};


private void Update()
{
    elapsedTime += Time.deltaTime;
    if (elapsedTime >= timeSpeed)
    {
        elapsedTime = 0f;

        AddDay();
        Debug.Log(day + ", " + monthNames[(int)month] + ", " + year.ToString() + " BC");
    }
}

private void AddDay()
{
    totalDays += 1;
    day += 1;

    if (day == 31)
    {
        day = 1;
        AddMonth();
    }
}

private void AddMonth()
{
    totalMonths += 1;
    month += 1;

    if (month == 13)
    {
        month = 1;
        AddYear();
    }
}

private void AddYear()
{
    year -= 1;
    totalYears += 1;
}

public void updateTimeText()
{
    timeText.text = monthNames[(int)month] + ", " + year.ToString() + " BC";
}
编辑:我可能希望使用以下工具设计自己的日历:

public class GameCalendar : MonoBehaviour
{
    public List<Month> months = new List<Month>();

    public void Awake()
    {
        AddMonth(1, "January", 31);
        AddMonth(2, "February", 28);
        AddMonth(3, "March", 31);
        AddMonth(4, "April", 30);
        AddMonth(5, "May", 31);
        AddMonth(6, "June", 30);
        AddMonth(7, "July", 31);
        AddMonth(8, "August", 31);
        AddMonth(9, "September", 30);
        AddMonth(10, "October", 31);
        AddMonth(11, "November", 30);
        AddMonth(12, "December", 31);
    }

    public void AddMonth(byte _monthInt, string _monthName, byte _daysInMonth)
    {
        Month m = new Month();
        m.monthInt = _monthInt;
        m.monthName = _monthName;
        m.daysInMonth = _daysInMonth;
        months.Add(m);
    }
}

[System.Serializable]
public class Month
{
    public byte monthInt;
    public string monthName;
    public byte daysInMonth;
}
公共类游戏日历:单一行为
{
公共列表月份=新列表();
公共图书馆
{
每月(1,“1月”,31日);
每月(2日,“2月”,28日);
每月(3日,“3月”,31日);
每月(4月,“4月”,30日);
每月(5月5日,5月31日);
每月(6月6日,6月30日);
每月(7日,“7月”,31日);
每月(8日,“8月”,31日);
每月(9日,“9月”,30日);
每月(10月10日、10月31日);
每月(11日,“11月”,30日);
每月(12日,“12月”,31日);
}
public void AddMonth(byte\u monthhint,string\u monthName,byte\u daysInMonth)
{
月份m=新月份();
m、 monthInt=_monthInt;
m、 蒙特纳姆=_蒙特纳姆;
m、 daysInMonth=_daysInMonth;
月份。加上(m);
}
}
[系统可序列化]
公课月
{
公共字节提示;
公共字符串名称;
公共字节日/月;
}

使用支持历史日期和不同日历的工具。

我不清楚。请注意,公元前1000年也不存在一月、二月等。你是想创造一个新的世界吗?谢谢你的时间,如果我不清楚,我道歉。我要问的问题类似于日期/时间变量如何通过保存int值来工作,方法可以调用int值将其转换为字符串dd/mm/yyyy。我怎样才能获得类似的结果,而不是每增加一天、一个月、一年。我如何引用totalDays的int值并将其转换为dd/mm/yyyy,同时考虑它所在的月份,以便所有月份都不初始化为30天。因此,上面讨论的一个用例是,当ingame事件发生时,event类将存储currentday的int和dateOfEvent。然后,在UI中,与调用TimeDate.ToString()方法类似,我可以对dateOfEvent变量执行相同的操作听起来您应该创建自己的date类。@BugFinder我认为应该是这样的。我现在正在做这件事,只是希望有一个更简单的工作。谢谢你们两位抽出时间。