Je poste ici alors que cela peut bien aussi être dans la rubrique UI.
J'ai sur ma scène un compteur éphéméride avec heure, jours, mois, année et time laps en script C#. Je cherche à faire une horloge en réutilisant le même script ( moins le time lasp).
Code
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using System;
using UnityEngine.UI;
public class InfoHorloge : MonoBehaviour
{
public Text _afficheHorloge;
public TOD_Sky tod_Sky;
public TOD_Time tod_time;
public InputField _hh;
public InputField _mm;
public InputField _jj;
public InputField _ms;
public InputField _aaaa;
public InputField _cycle;
private bool minute60 ;
// Use this for initialization
void Start ()
{
Reset ();
}
void Update ()
{
int heureCal = 0;
if (tod_Sky.Cycle.Hour < (int)tod_Sky.Cycle.Hour)
heureCal = (int)tod_Sky.Cycle.Hour - 1;
else
heureCal = (int)tod_Sky.Cycle.Hour;
if (heureCal == 24) {
heureCal = 0;
}
string heureTampo = heureCal.ToString ("00");
string minuteTampo = Convert.ToInt32 ((tod_Sky.Cycle.Hour - (int)tod_Sky.Cycle.Hour) * 60.0f).ToString ("00");
string jourTampo = tod_Sky.Cycle.Day.ToString ("00");
string moisTampo = tod_Sky.Cycle.Month.ToString ("00");
string anneeTampo = tod_Sky.Cycle.Year.ToString ("0000");
//*******************************************************
int ajout1heure = 0; // variable à ajouter à l'heure pour la changer lors du passage de 60 à 00 mn
if (((tod_Sky.Cycle.Hour - (int)tod_Sky.Cycle.Hour) * 60.0f) <= 59) {
minuteTampo = minuteTampo;
// si les minutes sont inférieures ou égale à 59, on affiche le memes chiffres de 0 à 59
} else {
minuteTampo = "00";// sinon on affiche 00 à la place de 59
ajout1heure = heureCal + 1; // on ajoute +1 à integer heureCal pour faire changer le chiffre de l'heure
heureTampo = ajout1heure.ToString ("00");
// on converti ajout1heure en string pour l'écrire
// Problème on a pour la minute Heure 60 : affichage (Heure +1) 00mn pendant 1 mn
// puis pour (Heure+1) 00mn , on a aussi : affichage (Heure +1) 00mn pendant 1 mn
// DONC 2 fois (Heure+1) 00mn ; soit 2 mn d'affichage avec (Heure+1) 00mn
}
//******************************************************************
_afficheHorloge.text = heureTampo + ":" + minuteTampo + " - " + jourTampo + "/" + moisTampo + "/" + anneeTampo + " - Time Laps : " + _cycle.text;
}
public void ChangeHorloge ()
{
if (_hh.text != "" && _mm.text != "")
tod_Sky.Cycle.Hour = Convert.ToSingle (_hh.text) + Convert.ToSingle (_mm.text) / 60.0f;
if (_jj.text != "")
tod_Sky.Cycle.Day = Convert.ToInt32 (_jj.text);
if (_ms.text != "")
tod_Sky.Cycle.Month = Convert.ToInt32 (_ms.text);
if (_aaaa.text != "")
tod_Sky.Cycle.Year = Convert.ToInt32 (_aaaa.text);
if (_cycle.text != "" && _cycle.text != "0") {
tod_time.DayLengthInMinutes = Convert.ToSingle (_cycle.text);
} else if (_cycle.text == "0") {
tod_time.DayLengthInMinutes = 1440.0f; // pour mettre au meme rythe que l'hoerloge pc 1440 pourquoi ??
}
if (Convert.ToInt32 (_ms.text) >= 4 && Convert.ToInt32 (_ms.text) <= 10)
tod_Sky.World.UTC = 2.0f;
else
tod_Sky.World.UTC = 1.0f;
}
public void Reset ()
{
DateTime heureActuel = DateTime.Now;
_hh.text = "" + heureActuel.Hour;
_mm.text = "" + heureActuel.Minute;
_jj.text = "" + heureActuel.Day;
_ms.text = "" + heureActuel.Month;
_aaaa.text = "" + heureActuel.Year;
_cycle.text = "0";// attention 0 veux dire qu'en 0.00000sec le jour se fait, il faut mettre 3600 ( pour 1 heure ou 36 000 pour 10h pour 1 cycle jour nuit)
ChangeHorloge ();
}
}
Un cube pour l'horloge et un plane pour l'affichage des heures ? Sur quel élément mettre le script horloge ?
Merci