[RESOLU][DB-AL] freeze pause menu
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] freeze pause menu
Je vois que tu as réussi à cibler un peu plus précisément le problème. Ce serait donc seulement des textes? Il ne te reste plus qu'à affiner la recherche pour trouver la véritable cause. C’est ça le débogage, comme on dit mochement en français.
(Par contre, je ne vais pas DL et tester ton prefab)
(Par contre, je ne vais pas DL et tester ton prefab)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [DB-AL] freeze pause menu
J'ai découvert un truc que je ne m'explique pas.
J'ai créé un nouveau script C# j'y ai collé le code du précédent et ça marche.
J'ai parlé trop vite, dès que j'ai dupliqué le texte avec le script cela ne fonctionne plus.
J'ai créé un nouveau script C# j'y ai collé le code du précédent et ça marche.
J'ai parlé trop vite, dès que j'ai dupliqué le texte avec le script cela ne fonctionne plus.
J'ai créé un ensemble de jeux :
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
(RéSOLU) Re: [DB-AL] freeze pause menu
J'ai résolu le problème, comme je l'avais expliqué, j'avais 64 boutons avec des scrollbars qui essayer de se mettre à jour toutes en même temps à chaque frame dès l'ouverture du menu faisait friser le menu, du coup j'ai amélioré le code, comme tu me l'as suggérer Bouzouk50 et j'ai fait apparaitre les scrollbars uniquement quand j'en ai besoin, voici le code :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChoixBuild : MonoBehaviour {
public GameObject Blank;
public GameObject Construc1;
public GameObject Construc2;
public GameObject Construc3;
public Text TauxConstruc;
public string Cell;
private int vide;
//liés à la progressbar
public float progress = 0.0f;
public Texture2D emptyProgressBar; // Set this in inspector.
public Texture2D fullProgressBar; // Set this in inspector.
public Vector2 pos = new Vector2(20, 40);
public Vector2 size = new Vector2(60, 20);
public bool StartBar = false;
public float TempsDepart = 0f;
public Scrollbar ProgressBarre;
private bool PeutChanger;
void OnEnable()
{
ProgressBarre.gameObject.SetActive(false);
PeutChanger = true;
vide = PlayerPrefs.GetInt("C" + Cell.ToString() + "Number");
if (vide == 0) PlayerPrefs.SetInt("C" + Cell.ToString() + "Type", 0);
if (PlayerPrefs.GetInt("C" + Cell.ToString() + "Type") == 0)
{
Blank.SetActive(true);
Construc1.SetActive(false);
Construc2.SetActive(false);
Construc3.SetActive(false);
}
if (PlayerPrefs.GetInt("C" + Cell.ToString() + "Type") == 1)
{
Blank.SetActive(false);
Construc1.SetActive(true);
Construc2.SetActive(false);
Construc3.SetActive(false);
}
if (PlayerPrefs.GetInt("C" + Cell.ToString() + "Type") == 2)
{
Blank.SetActive(false);
Construc1.SetActive(false);
Construc2.SetActive(true);
Construc3.SetActive(false);
}
if (PlayerPrefs.GetInt("C" + Cell.ToString() + "Type") == 3)
{
Blank.SetActive(false);
Construc1.SetActive(false);
Construc2.SetActive(false);
Construc3.SetActive(true);
}
TauxConstruc.text = "";
if (PlayerPrefs.GetInt("C" + Cell.ToString() + "Type") != 0) TauxConstruc.text = vide + "/5";
}
void Update()
{
//Liés à la progressbar
if (StartBar == true && !Blank.activeSelf && vide != 0)
{
progress = (Time.unscaledTime - TempsDepart) * 0.5f;
}
if (progress > 1.00f && PeutChanger)
{
ChangeWeapon();
PeutChanger = false;
}
ProgressBarre.size = progress;
}
//Liés à la prosgressbar
public void BarreStart()
{
if (!ProgressBarre.gameObject.activeSelf) ProgressBarre.gameObject.SetActive(true);
TempsDepart = Time.unscaledTime;
StartBar = true;
}
public void BarreStop()
{
progress = 0f;
StartBar = false;
PeutChanger = true;
if (ProgressBarre.gameObject.activeSelf) ProgressBarre.gameObject.SetActive(false);
}
//Choix de la Langue
//Choix de la Langue
public void ChangeWeapon()
{
if (PlayerPrefs.GetInt("C" + Cell.ToString() + "Number") != 0)
{
vide = PlayerPrefs.GetInt("C" + Cell.ToString() + "Number") - 1;
PlayerPrefs.SetInt("C" + Cell.ToString() + "Number", vide);
TauxConstruc.text = vide + "/5";
}
}
}
J'ai créé un ensemble de jeux :
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Re: [RESOLU][DB-AL] freeze pause menu
Je ne comprends toujours pas pourquoi ça ne marche pas... Hier j'ai essayé d'améliorer mon menu et aujourd'hui, ça déconne à nouveau. C'est une histoire à s'arracher les cheveux.
Voici la liste des symptômes :
-En mode teste sur le PC tout fonctionne correctement.
-Sur mon téléphone, ça déconne.
Le jeu fonctionne sauf le menu, quand j'appuie sur le bouton assigné au menu, le jeu freeze, la track de position du joueur ne se fait plus, les sons continus, plus rien ne bouge dans l'affichage. Le fait de ré-appuyer sur le bouton du menu, le jeu continu comme si de rien n'était (aussi comme attendu).
Le menu est constitué de 4 panneaux (dont 1 inactif en permanence aujourd'hui). Sur chacun des menu, il y a une grille de 4 x 4 items à ramasser, mais il y a une case ou deux réservées, à nombre de munitions, au niveau de l'armure ou au niveau de vie.
J'ai un script pour l'activation et désactivation du menu :
Dans les menus j'ai 6 scripts différents dans les images, un par bouton :
1. La gestion des items santés ramassés :
2. l'affichage du niveau de vie :
3. la gestion des items d'armures ramassé :
4. l'affichage du niveau d'armure :
5. gestion des armes ramassés :
et 6. l'affichage des munitions:
Ai-je commis une faute, savez-vous si je rentre en conflit avec les limites de Google VR (j'utilise le SDK Google VR pour Android) ?
Voici la liste des symptômes :
-En mode teste sur le PC tout fonctionne correctement.
-Sur mon téléphone, ça déconne.
Le jeu fonctionne sauf le menu, quand j'appuie sur le bouton assigné au menu, le jeu freeze, la track de position du joueur ne se fait plus, les sons continus, plus rien ne bouge dans l'affichage. Le fait de ré-appuyer sur le bouton du menu, le jeu continu comme si de rien n'était (aussi comme attendu).
Le menu est constitué de 4 panneaux (dont 1 inactif en permanence aujourd'hui). Sur chacun des menu, il y a une grille de 4 x 4 items à ramasser, mais il y a une case ou deux réservées, à nombre de munitions, au niveau de l'armure ou au niveau de vie.
J'ai un script pour l'activation et désactivation du menu :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Menu : MonoBehaviour
{
public GameObject Inventaire01, Inventaire02, Inventaire03; //Inventaire04;
public Text TextInventaire01;
public Text TextInventaire02;
public Text TextInventaire03;
//public Text TextInventaire04;
private string attack;
private string armor;
private string health;
//private string build;
public GameObject Language;
private int AfficheMenu;
public GameObject minimapCanvas;
// Use this for initialization
void Start()
{
Inventaire01.SetActive(false);
Inventaire02.SetActive(false);
Inventaire03.SetActive(false);
//Inventaire04.SetActive(false);
Time.timeScale = 1;
attack = Language.GetComponent<xmlReader>().attack;
armor = Language.GetComponent<xmlReader>().armor;
health = Language.GetComponent<xmlReader>().health;
//build = Language.GetComponent<xmlReader>().build;
TextInventaire01.text = attack;
TextInventaire02.text = armor;
TextInventaire03.text = health;
//TextInventaire04.text = build;
PlayerPrefs.SetInt("MenuActive", 0);
AfficheMenu = PlayerPrefs.GetInt("menuInt");
}
// Update is called once per frame
void Update()
{
if (Time.timeScale == 1)
{
if (Input.GetKeyDown((KeyCode)AfficheMenu))
{
minimapCanvas.SetActive(false);
Time.timeScale = 0f;
Inventaire01.SetActive(true);
Inventaire02.SetActive(true);
Inventaire03.SetActive(true);
//Inventaire04.SetActive(true);
PlayerPrefs.SetInt("MenuActive", 1);
}
} else
{
if (Input.GetKeyDown((KeyCode)AfficheMenu))
{
Time.timeScale = 1;
Inventaire01.SetActive(false);
Inventaire02.SetActive(false);
Inventaire03.SetActive(false);
//Inventaire04.SetActive(false);
minimapCanvas.SetActive(true);
PlayerPrefs.SetInt("MenuActive", 0);
}
}
}
}
1. La gestion des items santés ramassés :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChoixSoin : MonoBehaviour {
public GameObject Blank;
public GameObject MK1;
public GameObject MK2;
public GameObject MK3;
public Text TauxDeSoin;
public int ptv;
public int Cell;
private int vide, CoupFeu;
public bool StartBar = false;
void Start()
{
CoupFeu = PlayerPrefs.GetInt("FireInt");
}
void OnEnable()
{
vide = PlayerPrefs.GetInt("H" + Cell.ToString() + "Number");
if (vide == 0) PlayerPrefs.SetInt("H" + Cell.ToString() + "Type", 0);
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 0)
{
Blank.SetActive(true);
MK1.SetActive(false);
MK2.SetActive(false);
MK3.SetActive(false);
}
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 1)
{
Blank.SetActive(false);
MK1.SetActive(true);
MK2.SetActive(false);
MK3.SetActive(false);
}
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 2)
{
Blank.SetActive(false);
MK1.SetActive(false);
MK2.SetActive(true);
MK3.SetActive(false);
}
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 3)
{
Blank.SetActive(false);
MK1.SetActive(false);
MK2.SetActive(false);
MK3.SetActive(true);
}
TauxDeSoin.text = "";
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") != 0) TauxDeSoin.text = PlayerPrefs.GetInt("H" + Cell.ToString() + "Number") + "/5";
StartBar = false;
}
void Update()
{
if (StartBar && Input.GetKeyDown((KeyCode)CoupFeu))
{
ChangeWeapon();
}
}
public void BarreStart()
{
StartBar = true;
}
public void BarreStop()
{
StartBar = false;
}
public void ChangeWeapon()
{
ptv = GetComponentInParent<PointDeVie>().getHP();
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Number") > 0)
{
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 1)
{
GetComponentInParent<PointDeVie>().setHP(ptv + 20);
if (GetComponentInParent<PointDeVie>().getHP() >= 100) GetComponentInParent<PointDeVie>().setHP(100);
}
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 2)
{
GetComponentInParent<PointDeVie>().setHP(ptv + 50);
if (GetComponentInParent<PointDeVie>().getHP() >= 100) GetComponentInParent<PointDeVie>().setHP(100);
}
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Type") == 3)
{
GetComponentInParent<PointDeVie>().setHP(ptv + 70);
if (GetComponentInParent<PointDeVie>().getHP() >= 100) GetComponentInParent<PointDeVie>().setHP(100);
}
if (PlayerPrefs.GetInt("H" + Cell.ToString() + "Number") != 0)
{
vide = PlayerPrefs.GetInt("H" + Cell.ToString() + "Number") - 1;
PlayerPrefs.SetInt("H" + Cell.ToString() + "Number", vide);
TauxDeSoin.text = vide + "/5";
}
}
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChoixSoinPTV : MonoBehaviour {
public GameObject Blank;
public GameObject Soin;
public int Cell;
public int ptv;
public Text TauxDeSoin;
//liés à la progressbar
public float progress = 0.0f;
public Texture2D emptyProgressBar; // Set this in inspector.
public Texture2D fullProgressBar; // Set this in inspector.
public Vector2 pos = new Vector2(20, 40);
public Vector2 size = new Vector2(60, 20);
public bool StartBar = false;
public Scrollbar ProgressBarre;
void OnEnable()
{
Blank.SetActive(false);
Soin.SetActive(true);
}
// Update is called once per frame
void Update()
{
ptv = GetComponentInParent<PointDeVie>().getHP();
TauxDeSoin.text = ptv + "%";
//Liés à la progressbar
progress = (float)ptv / 100;
ProgressBarre.size = progress;
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChoixArmure : MonoBehaviour {
public GameObject Blank;
public GameObject Casque;
public GameObject Armure;
public GameObject Combinaison;
public Text DegP;
public int pta;
public int Cell;
private int CoupFeu;
public bool StartBar = false;
void Start()
{
CoupFeu = PlayerPrefs.GetInt("FireInt");
}
void OnEnable()
{
pta = PlayerPrefs.GetInt("Armor");
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Number") == 0) PlayerPrefs.SetInt("D" + Cell.ToString() + "Type", 0);
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 0)
{
Blank.SetActive(true);
Casque.SetActive(false);
Armure.SetActive(false);
Combinaison.SetActive(false);
}
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 1)
{
Blank.SetActive(false);
Casque.SetActive(true);
Armure.SetActive(false);
Combinaison.SetActive(false);
}
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 2)
{
Blank.SetActive(false);
Casque.SetActive(false);
Armure.SetActive(true);
Combinaison.SetActive(false);
}
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 3)
{
Blank.SetActive(false);
Casque.SetActive(false);
Armure.SetActive(false);
Combinaison.SetActive(true);
}
DegP.text = "";
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") != 0) DegP.text = PlayerPrefs.GetInt("D" + Cell.ToString() + "Number") + "/5";
StartBar = false;
}
void Update()
{
if (StartBar && Input.GetKeyDown((KeyCode)CoupFeu))
{
ChangeWeapon();
}
}
public void BarreStart()
{
StartBar = true;
}
public void BarreStop()
{
StartBar = false;
}
public void ChangeWeapon()
{
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Number") > 0)
{
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 1)
{
PlayerPrefs.SetInt("Armor", PlayerPrefs.GetInt("Armor") + 20);
if (PlayerPrefs.GetInt("Armor") >= 100) PlayerPrefs.SetInt("Armor", 100);
}
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 2)
{
PlayerPrefs.SetInt("Armor", PlayerPrefs.GetInt("Armor") + 50);
if (PlayerPrefs.GetInt("Armor") >= 100) PlayerPrefs.SetInt("Armor", 100);
}
if (PlayerPrefs.GetInt("D" + Cell.ToString() + "Type") == 3)
{
PlayerPrefs.SetInt("Armor", PlayerPrefs.GetInt("Armor") + 70);
if (PlayerPrefs.GetInt("Armor") >= 100) PlayerPrefs.SetInt("Armor", 100);
}
PlayerPrefs.SetInt("D" + Cell.ToString() + "Number", PlayerPrefs.GetInt("D" + Cell.ToString() + "Number") - 1);
DegP.text = PlayerPrefs.GetInt("D" + Cell.ToString() + "Number") + "/5";
}
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChoixArmurePT : MonoBehaviour
{
public GameObject Blank;
public GameObject Armure;
public int Cell;
public int pta;
public Text DegP;
//liés à la progressbar
public float progress = 0.0f;
public Texture2D emptyProgressBar; // Set this in inspector.
public Texture2D fullProgressBar; // Set this in inspector.
public Vector2 pos = new Vector2(20, 40);
public Vector2 size = new Vector2(60, 20);
public bool StartBar = false;
public Scrollbar ProgressBarre;
void OnEnable()
{
Blank.SetActive(false);
Armure.SetActive(true);
}
// Update is called once per frame
void Update()
{
pta = PlayerPrefs.GetInt("Armor");
DegP.text = pta + "%";
//Liés à la progressbar
progress = (float)pta / 100;
ProgressBarre.size = progress;
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChoixArme : MonoBehaviour {
public GameObject Blank;
public GameObject Couteau;
public GameObject Pistolet;
public GameObject Fusil;
public Text Munit;
public float MunitValue;
public float Chargeur;
public float BulletValue;
public int Cell, CoupFeu;
private int vide;
public bool StartBar = false;
void Start()
{
CoupFeu = PlayerPrefs.GetInt("FireInt");
}
void OnEnable()
{
if (Cell == 0)
{
PlayerPrefs.SetInt("A" + Cell.ToString() + "Type", 1);
if (PlayerPrefs.GetInt("A" + Cell.ToString() + "Number") == 0) PlayerPrefs.SetInt("A" + Cell.ToString() + "Number", 1);
}
vide = PlayerPrefs.GetInt("A" + Cell.ToString() + "Number");
if (vide == 0) PlayerPrefs.SetInt("A" + Cell.ToString() + "Type", 0);
MunitValue = GetComponentInParent<AMMO>().getAMMO();
Chargeur = GetComponentInParent<AMMO>().getChargeur();
BulletValue = GetComponentInParent<AMMO>().getBullet();
Munit.text = "";
if (PlayerPrefs.GetInt("A" + Cell.ToString() + "Type") == 0)
{
Blank.SetActive(true);
Couteau.SetActive(false);
Pistolet.SetActive(false);
Fusil.SetActive(false);
}
if (PlayerPrefs.GetInt("A" + Cell.ToString() + "Type") == 1)
{
Blank.SetActive(false);
Couteau.SetActive(true);
Pistolet.SetActive(false);
Fusil.SetActive(false);
}
if (PlayerPrefs.GetInt("A" + Cell.ToString() + "Type") == 2)
{
Blank.SetActive(false);
Couteau.SetActive(false);
Pistolet.SetActive(true);
Fusil.SetActive(false);
}
if (PlayerPrefs.GetInt("A" + Cell.ToString() + "Type") == 3)
{
Blank.SetActive(false);
Couteau.SetActive(false);
Pistolet.SetActive(false);
Fusil.SetActive(true);
}
if (vide != 0) Munit.text = PlayerPrefs.GetInt("A" + Cell.ToString() + "Number") + "/5";
StartBar = false;
}
void Update()
{
if (StartBar && Input.GetKeyDown((KeyCode)CoupFeu))
{
ChangeWeapon();
}
}
public void BarreStart()
{
StartBar = true;
}
public void BarreStop()
{
StartBar = false;
}
public void ChangeWeapon()
{
if (Blank.activeSelf) { GetComponentInParent<AMMO>().setArme(0); }
if (Couteau.activeSelf) { GetComponentInParent<AMMO>().setArme(1); }
if (Pistolet.activeSelf) { GetComponentInParent<AMMO>().setArme(2); }
if (Fusil.activeSelf) { GetComponentInParent<AMMO>().setArme(3); }
if (PlayerPrefs.GetInt("A" + Cell.ToString() + "Number") != 0)
{
vide = PlayerPrefs.GetInt("A" + Cell.ToString() + "Number") - 1;
PlayerPrefs.SetInt("A" + Cell.ToString() + "Number", vide);
Munit.text = vide + "/5";
}
}
}
Code : Tout sélectionner
using UnityEngine;
using UnityEngine.UI;
public class ChoixArmeMunit : MonoBehaviour {
public GameObject Blank;
public GameObject Armes;
public Text Munit;
public float MunitValue;
public float Chargeur;
public float BulletValue;
public int Cell;
//liés à la progressbar
public float progress = 0.0f;
public Texture2D emptyProgressBar; // Set this in inspector.
public Texture2D fullProgressBar; // Set this in inspector.
public Vector2 pos = new Vector2(20, 40);
public Vector2 size = new Vector2(60, 20);
public bool StartBar = false;
public float TempsDepart = 0f;
public Scrollbar ProgressBarre;
void OnEnable()
{
Blank.SetActive(false);
Armes.SetActive(true);
}
void Update()
{
MunitValue = GetComponentInParent<AMMO>().getAMMO();
Chargeur = GetComponentInParent<AMMO>().getChargeur();
BulletValue = GetComponentInParent<AMMO>().getBullet();
if (Armes.name == "MunitionsPistolet")
{
Munit.text = Chargeur + "/" + MunitValue;
}
if (Armes.name == "MunitionsFusil")
{
Munit.text = BulletValue + "";
}
//Liés à la progressbar
progress = 0f;
if (Armes.name == "MunitionsPistolet" && (Chargeur + MunitValue) <= 1000) progress = (Chargeur + MunitValue) / 1000;
if (Armes.name == "MunitionsFusil" && BulletValue <= 500) progress = BulletValue / 500;
if (Armes.name == "MunitionsPistolet" && (Chargeur + MunitValue) > 1000) progress = 1;
if (Armes.name == "MunitionsFusil" && BulletValue > 500) progress = 1;
ProgressBarre.size = progress;
}
}
J'ai créé un ensemble de jeux :
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [PLUS RESOLU][DB-AL] freeze pause menu
Je me suis pas amusé à tout lire tellement c'est redondant.
Déjà en terme de performances:
tu fais des appels successifs aux PlayerPrefs totalement inutiles, et comme déjà répété plusieurs fois: C'est lent et lourd.
Par exemple:Cela veut dire qu'à chaque frame tu vas chercher les points d'armures stockés. Totalement inutiles. Ce pta ne change pas à chaque frame, il faut le mettre à jour seulement lorsque des actions le modifient.
Pareil, un appel à chaque frame pour aller chercher tjs la même chose. Cherche là une seule fois au Start () et ensuite accèdes-y directement.
Aussi, comme tu es sur Android, comment simules tu les Input?Parce que tu n'as pas de clavier à ce que je sache...
Déjà en terme de performances:
tu fais des appels successifs aux PlayerPrefs totalement inutiles, et comme déjà répété plusieurs fois: C'est lent et lourd.
Par exemple:
Code : Tout sélectionner
void Update()
{
pta = PlayerPrefs.GetInt("Armor");
Code : Tout sélectionner
void Update()
{
MunitValue = GetComponentInParent<AMMO>().getAMMO();
Chargeur = GetComponentInParent<AMMO>().getChargeur();
BulletValue = GetComponentInParent<AMMO>().getBullet();
Aussi, comme tu es sur Android, comment simules tu les Input?
Code : Tout sélectionner
Input.GetKeyDown((KeyCode)CoupFeu)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [PLUS RESOLU][DB-AL] freeze pause menu
J'ai une manette bluetooth.
J'ai créé un menu de choix des touches dans le menu d'acceuil.
Je vais essayé de faire ce que tu m'as dis ce soir.
Si je ne vais chercher et mettre à jour le texte qu'au démarrage (OnEnable marcherait il ? car en jeu les valeurs peuvent varier et Start ne mettrait pas à jour par rapport au jeu) et à chaque modification, cela serait mieux qu'à chaque frame c'est ça que tu me dit ?
Et si j'attends avec routine l'activation du tableau 1 pour afficher le 2 puis l'activation du 2 pour afficher le 3, ça ne serait pas mieux où cela demanderait trop de ressources ?
J'ai créé un menu de choix des touches dans le menu d'acceuil.
Je vais essayé de faire ce que tu m'as dis ce soir.
Si je ne vais chercher et mettre à jour le texte qu'au démarrage (OnEnable marcherait il ? car en jeu les valeurs peuvent varier et Start ne mettrait pas à jour par rapport au jeu) et à chaque modification, cela serait mieux qu'à chaque frame c'est ça que tu me dit ?
Et si j'attends avec routine l'activation du tableau 1 pour afficher le 2 puis l'activation du 2 pour afficher le 3, ça ne serait pas mieux où cela demanderait trop de ressources ?
J'ai créé un ensemble de jeux :
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [PLUS RESOLU][DB-AL] freeze pause menu
Le principal problème ici, c'est la conception, bien avant l'optimisation ou l'algo. Et essayer de remettre sur pied son cheval malade est parfois plus long et difficile que d'en entraîner un nouveau en bonne santé...
Il faudrait, de mon point de vue, revoir la conception du code de ton menu de façon plus événementielle. Chaque action/clic entraîne un événement qui gère tout ce qu'il doit à cet instant t. Ainsi, aucun calcul n'est effectué en dehors de cela (sauf ta progressBar). Ça évite ce genre de problème de freeze et de perte de fps.
Après, ce que je ne comprends pas, c'est pourquoi seul un menu est affecté par cela et pas les 3 autres, s'ils font plus ou moins la même chose...
Il faudrait, de mon point de vue, revoir la conception du code de ton menu de façon plus événementielle. Chaque action/clic entraîne un événement qui gère tout ce qu'il doit à cet instant t. Ainsi, aucun calcul n'est effectué en dehors de cela (sauf ta progressBar). Ça évite ce genre de problème de freeze et de perte de fps.
Après, ce que je ne comprends pas, c'est pourquoi seul un menu est affecté par cela et pas les 3 autres, s'ils font plus ou moins la même chose...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [PLUS RESOLU][DB-AL] freeze pause menu
Tu as raison, je vais repartir de zéro, j'ai trouvé un tuto qui explique bien comment faire : https://www.youtube.com/watch?v=mR47TBbmsAI
Je vais gérer l'ensemble de mes stocks depuis l'inventaire, et les autres scripts agiront dessus.
Il me reste une question, est-ce qu'il est possible de détecter quand un joueur quitte brutalement le jeu pour sauver l'inventaire avec ArrayPrefs ? Je n'utiliserai les ArrayPrefs qu'au démarrage de la scène, lors du passage au niveau suivant et lors du moment où on quitte le jeu vers le menu d’accueil.
Je vais gérer l'ensemble de mes stocks depuis l'inventaire, et les autres scripts agiront dessus.
Il me reste une question, est-ce qu'il est possible de détecter quand un joueur quitte brutalement le jeu pour sauver l'inventaire avec ArrayPrefs ? Je n'utiliserai les ArrayPrefs qu'au démarrage de la scène, lors du passage au niveau suivant et lors du moment où on quitte le jeu vers le menu d’accueil.
J'ai créé un ensemble de jeux :
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [PLUS RESOLU][DB-AL] freeze pause menu
S'il quitte brutalement, c'est à dire sans passer par le jeu lui-même, c'est mort pour lui. Il a qu'à quitter normalement. Sinon, tu peux faire une sauvegarde avant de quitter, ce sera à toi de l'écrire.
https://docs.unity3d.com/ScriptReferenc ... .Quit.html
https://docs.unity3d.com/ScriptReferenc ... lQuit.html
https://docs.unity3d.com/ScriptReferenc ... nQuit.html
https://docs.unity3d.com/ScriptReferenc ... .Quit.html
https://docs.unity3d.com/ScriptReferenc ... lQuit.html
https://docs.unity3d.com/ScriptReferenc ... nQuit.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [RESOLU][DB-AL] freeze pause menu
Comme écris précédemment, j'ai recréé mon menu mais il continuait à bugger. J'avais remis des scrollbars pour afficher le nombre de munitions, de vie ou d'armure. Et je ne sais pas pourquoi les scrollbars mettait le bazarre.
En enlevant les scrollbars, le menu s'affiche de manière fluide, tout à l'air OK.
(A la place, j'ai joué sur la couleur de bouton du menu pour représenter mes items.)
En enlevant les scrollbars, le menu s'affiche de manière fluide, tout à l'air OK.
(A la place, j'ai joué sur la couleur de bouton du menu pour représenter mes items.)
J'ai créé un ensemble de jeux :
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.
Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo
Il s'agit de FPS pour Android.