Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
在datetime中的特定时间触发事件_Datetime_Unity3d - Fatal编程技术网

在datetime中的特定时间触发事件

在datetime中的特定时间触发事件,datetime,unity3d,Datetime,Unity3d,我的游戏包含一个datetime来表示游戏中的日期,它会自动向前移动时间。我有一系列只会在特定日期发生的事件 问题是什么是最好的方式,以便在时机成熟时触发这些事件 现在我能想到的最好办法是为每一个事件设置一个日期,所以每次更新游戏时间时,我都会检查(游戏时间>=事件时间)。但是它似乎消耗了很多资源,因为时间每秒更新得非常频繁。有没有更好的办法 公共类DateTimeManager:MonoBehavior { //独生子女 公共静态DateTimeManager dateManager; //获

我的游戏包含一个datetime来表示游戏中的日期,它会自动向前移动时间。我有一系列只会在特定日期发生的事件

问题是什么是最好的方式,以便在时机成熟时触发这些事件

现在我能想到的最好办法是为每一个事件设置一个日期,所以每次更新游戏时间时,我都会检查(游戏时间>=事件时间)。但是它似乎消耗了很多资源,因为时间每秒更新得非常频繁。有没有更好的办法

公共类DateTimeManager:MonoBehavior
{
//独生子女
公共静态DateTimeManager dateManager;
//获取其他对象
私人玩家管理员玩家管理员;
//局部变量
私密文本显示时间;
私有文本显示日期;
私有映像时间刻度映像;
浮动计数器;
整数日计数器;
//获取速度图标
公共雪碧慢;
公共雪碧培养基;
公共精神禁食;
//输出变量
公共日期时间;
void Start(){
//独生子女
dateManager=这个;
//获取其他对象
gameStatManager=GameObject.Find(“gameStatManager”).GetComponent();
displayDate=transform.Find(“日期”).gameObject.GetComponent();
displayTime=transform.Find(“Time”).gameObject.GetComponent();
timeScaleImage=transform.Find(“TimeScale”).gameObject.GetComponent();
//初始化
dateTime=gameStatManager.GetDateTime();
//设置默认值
Time.timeScale=1;
timeScaleImage.sprite=慢;
计数器=0f;
dayCounter=0;
}
无效更新()
{
计数器+=时间增量时间;
如果(计数器>=1f/时间刻度){
计数器-=1f/时间。时间刻度;
//再加10分钟
dateTime=dateTime.AddMinutes(10);
//添加日计数器
dayCounter++;
如果(日计数器>=144){
dayCounter=0;
gameStatManager.AddTotalDay();
}
//显示日期时间
displayDate.text=dateTime.ToString(“dd-MMM,yyyy”);
displayTime.text=dateTime.ToString(“h:mmtt”);
//到GSM
gameStatManager.SetDateTime(日期时间);
}
}
//按钮功能
public void ChangeTimeScale(){
//1f=10分钟/秒| 6f=1小时/秒| 36f=6小时/秒
如果(Time.timeScale==1f){
Time.timeScale=6f;
timeScaleImage.sprite=中等;
}
else if(Time.timeScale==6f){
Time.timeScale=36f;
timeScaleImage.sprite=fast;
}
否则{
Time.timeScale=1f;
timeScaleImage.sprite=慢;
}
}
}

你检查过了吗?@AliKanat但是我的事件可能在游戏开始后很长时间内发生,可能在游戏结束后几个小时发生。如果我使用invoke,这个数字会非常大?你可以创建一个方法,将日期时间转换为秒,反之亦然。那么你就不用担心我了。你检查过了吗?@AliKanat但是我的事件可能会在游戏开始后很久发生,可能会在游戏结束后几个小时发生。如果我使用invoke,这个数字会非常大?你可以创建一个方法,将日期时间转换为秒,反之亦然。那你就不用担心了