Je suis actuellement en dernière année de mon cursus scolaire et suis en Travail de Fin d'Etude dont le but est de faire de la réalité virtuelle. Ne connaissant pas du tout le logiciel Unity, j'essaie dans un premier temps d'être à l'aise avec le logiciel tout en essayant de prendre les éléments pouvant être utilises pour mon sujet.
Dans mon travail, je veux afficher un message pendant 5 secondes et le faire disparaître. Je suis partie d'un script d'un cours de Unity que j'ai modifié pour le faire. J'arrive donc à l'afficher mais dès lors que j’ajoute un élément pour l'afficher 5 secondes, le message ne s'affiche plus et je n'arrive pas à comprendre pourquoi... J'ai essayé de voir si le programme accédait bien à ma boucle TempsMessage et la réponse est oui.
J'ai essayé de deux manières différentes, voici les deux scripts:
(1)UI - Text :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;
using UnityEngine.UI;
public class Win5 : MonoBehaviour
{
private Rigidbody Rb;
public float Speed;
private int Count;
public Text CountText;
public Text WinText;
private float seconde;
private void Start()
{
Rb = GetComponent<Rigidbody>();
Count = 0;
CountText.text = "Count : " + Count.ToString();
WinText.text = "";
seconde = 0;
}
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
Rb.AddForce(movement * Speed);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
Count += 1;
SetCountText();
}
}
void SetCountText()
{
CountText.text = "Count : " + Count.ToString();
if (Count >= 12)
{
WinText.text = "You Win !!";
print("avant temps message");
TempsMessage();
}
}
void TempsMessage()
{
print("entrée dans temps message");
while (seconde <= 5)
{
seconde += Time.deltaTime*1f;
print(seconde);
}
WinText.text = "";
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;
using UnityEngine.UI;
public class Win5 : MonoBehaviour
{
private Rigidbody Rb;
public float Speed;
private int Count;
public Text CountText;
public GameObject WinText;
private float seconde;
private void Start()
{
Rb = GetComponent<Rigidbody>();
Count = 0;
CountText.text = "Count : " + Count.ToString();
WinText.SetActive(false);
seconde = 0;
}
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
Rb.AddForce(movement * Speed);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
Count += 1;
SetCountText();
}
}
void SetCountText()
{
CountText.text = "Count : " + Count.ToString();
if (Count >= 12)
{
WinText.SetActive(true);
print("avant temps message");
TempsMessage();
}
}
void TempsMessage()
{
print("entrée dans temps message");
while (seconde <= 5)
{
seconde += Time.deltaTime*1f;
print(seconde);
}
WinText.SetActive(false);
}
}
Si vous avez la moindre aide pour essayer de résoudre mon problème, n'hésitez pas ! (Même une autre manière pour le faire ).
Merci,
LOr1