2016-09-04 4 views
1

Donc la question est la suivante: j'ai des états dans mon code. Je veux les diviser en régions et simplement les activer ou les désactiver à certaines conditions. Le code se trouve dans une fonction Unity en boucle nommée LateUpdate. Je souhaite faire cela pour économiser sur le temps processeur au lieu d'utiliser des booléens ou des enums. Puis-je faire ça? si c'est le cas, comment? Ajouter. info: Je dois faire cela en désactivant l'exécution. Le script est un lecteur de séquence d'images qui joue des gifs. J'ai une partie échauffement puis une partie en boucle. Je peux l'écrire avec des booléens, mais comme je l'ai dit, je dois économiser sur le temps du processeur car ce sera un jeu mobile.C# désactiver la région du code à la condition

du code:

void LateUpdate() 
{ 
    if (warmUp) 
    { 
     currentImageIndex = Mathf.RoundToInt(Time.time * frameRate); 
     currentImageIndex = currentImageIndex % spriteSheet.Length; 
     spriteRenderer.sprite = spriteSheet[currentImageIndex]; 
     warmUp = false; 
    } 
    if (updateEnabled && !warmUp) 
    { 
     switch (playMode) 
     { 
      case PlayMode.order: 
       currentImageIndex = Mathf.RoundToInt(Time.time * frameRate); 
       currentImageIndex = currentImageIndex % spriteSheet.Length; 
       spriteRenderer.sprite = spriteSheet[currentImageIndex]; 
       break; 
      case PlayMode.random: 
       updateEnabled = false; 
       StartCoroutine(RandomizedPlay()); 
       break; 
     } 
    } 

} 
+0

Qu'est-ce qui ne va pas si vous placez les régions dans les blocs 'if' que vous venez de définir ou que vous ne spécifiez pas les variables nécessaires pour y accéder? Il y a pratiquement 0 overhead à un simple 'if (_doSection1) {...}' si '_doSection1' est' false'. –

+0

Cela ressemble à un défaut de conception. Les régions sont des instructions de compilation, vous ne pouvez pas les définir pendant l'exécution. Cependant, pourquoi ne pas utiliser les simples instructions «if» ou loop? Cosnider montre du code. – HimBromBeere

+0

Je n'utilise pas les régions atm: D ne sais pas comment ... Je joins un code dans la question si je peux – agiro

Répondre

0

simples contrôles if comme vous êtes en train de faire est déjà la bonne façon de désactiver le code lors de l'exécution qui ne doit pas toujours courir à l'intérieur d'une fonction.

Vous devriez apprendre à utiliser the unity profiler on the mobile device, la source de votre ralentissement (si vous en avez) ne sont pas de vos déclarations if eux-mêmes.

Je dirais qu'il est extrêmement probable que chacune de ces vérifications n'atteigne même pas 0,00% du temps CPU au cours du profileur.

+0

Merci pour l'info. Je pensais toujours que ifing est le moyen noob et il y en a quelques-uns au début: D Edit: Je veux dire décider si un tas de code ne sera jamais exécuté à nouveau après avoir servi son but. Donc, comme il pourrait même être supprimé. – agiro