0
votes

Comment puis-je vérifier pour éviter la duplication de GameObject dans la hiérarchie?

GameObject newText = Instantiate(text);

0 commentaires

3 Réponses :


1
votes

La documentation Unity sur l'attribut ExecuteAways vous montre comment différencier la logique en fonction de votre mode de rédaction ou en mode de lecture.

void Start()
{
    if (Application.IsPlaying(gameObject))
    {
        // Play logic
    }
    else
    {
        // Editor logic
    }
}


1 commentaires

Cela laissera un code de déchets / bloats dans les constructions. La vérification de mode édition peut également être spécifiée. Voir Ma réponse pour une meilleure alternative.



1
votes

Utilisez Compilation dépendante de la plate-forme afin que le code destiné à exécuter uniquement dans l'éditeur est jamais compilé à une construction. Cela évite le code de bloat dans la construction.

Ensuite, utilisez EditorApplication.isplaying code> pour assurer le code destiné à exécuter uniquement en mode édition ne fonctionne pas en mode de lecture. P>

#if UNITY_EDITOR //Avoid garbage in the builds
    //Editor logic
    if(!EditorApplication.isPlaying) //If NOT in play mode
        GameObject newText = Instantiate(text);
#endif


0 commentaires

0
votes

En supposant qu'il n'y ait aucun autre texmesh d'objets sous le ObjectStOnumber [i] Vous pouvez simplement vérifier d'abord si l'objet existe déjà comme xxx < p> Sinon, car nous savons comment vous allez appeler l'objet, vous pouvez également utiliser trouver comme xxx


Je changerais les types à Faites correspondre vos types cibles déjà par exemple Si vous apportez le type de texte xxx

alors vous pouvez omettre le getComponent et simplement utiliser < Pré> xxx

et il est également sûr que vous ne pouvez également pas référencer des préfabriquements / objets avec le composant requis attaché.


pour la performance, je préférerais également utiliser < Pré> xxx

puis utiliser xxx


0 commentaires