cherche à obtenir une instance de cet objet de jeu afin que je puisse utiliser avec succès .enabled pour le masquer dans une scène. Assez nouveau à C # et je crois que je suis proche de réaliser mon but avec la ligne ci-dessus. Quels doivent avoir changé? Voulez-vous comprendre comment faire correctement cela. P> p>
3 Réponses :
GameObject button; void Start() { button = GameObject.Find ("yourButtom"); } void SomeEvent() { button.SetActive(false); } I think you have to help to you
Cette clone a préfabriqué, le bouton existe probablement déjà dans la scène
Il existe plusieurs façons d'accéder à un jeu de jeu dans un script en fonction de laquelle GameObject vous essayez d'obtenir.
Si vous essayez d'accéder à un jeu d'un comportement dans le script de comportement, alors simplement en utilisant Accéder à un script qui est connecté à un autre GameObject est où il peut être délicat. Pour des scènes telles que un MainMenu, il n'y a rien de mal à lui donner une référence publique comme exemple: p> avec cet exemple, vous venez de glisser et de déposer le jeuObject avec le PlayPortalloginbutton. Script sur votre script Manager, le script qui contrôlerait s'il est activé ou non. P> Si vous avez besoin d'une approche plus modulaire, par exemple dans une scène de gameplay où vous remplissez des objets au moment de l'exécution. Vous pouvez prendre: p> dans le script ci-dessus si vous aviez besoin de GameObject de Loginbutton, vous pouvez maintenant y accéder via LoginButton.GameObject. P> Il y a d'autres exemples que vous pouvez utiliser et d'autres approches, mais je pense que ce qui précède devrait suffire si pour un menu. P> Je mentionnerai aussi que j'évite l'exemple de Utilisation de FindObjectType, vous êtes moins susceptible d'avoir une erreur, et si vous supprimez ce type de script, ces scripts remplacent une erreur indiquant que le script n'existe plus. Lors du refactoring, si vous cliquez avec le bouton droit de la souris sur le nom de comportement et utilisez l'option Renommer, il mettra automatiquement à jour les références au script tout au long de votre code. P> P> GameObject code> devrait suffire depuis que c'est le jeu que le comportement est attaché à. p>
GameObject .Find code> et
gameObject.findgameObjectSwithTag code> Comme ceux-ci sont plus sujets à l'erreur. Ils ne travailleront que si votre nom ou votre balise sont correctement marqués, si vous les renommez pour une raison quelconque, vos scripts ne trouveront pas l'objet, ce qui peut entraîner un problème avec le dépannage. P>
Voici une façon, vous pouvez trouver un composant sur un Cependant, Voici un exemple de la référence de la référence dans le domaine global (Il apparaîtra dans l'éditeur et vous pouvez faire glisser-déposer le Voici un exemple de la façon dont vous pouvez Utilisez gameObject.find ("...") dans le Si vous devez rechercher < Code> gameObjects code> dans votre scène par type ou par nom de balise, reportez-vous au nom gameObject code> dans la scène, où "PORTALLOGINBUTON" est le nom du
gameObject code> comme indiqué dans l'éditeur: < Pré> xxx pré>
gameObject.find ("...") code> recherche le nom de chaque
gameObject code> dans la scène, et ceci n'est pas Habituellement, le meilleur moyen de faire référence à un
gameObject code> car il n'est pas très efficace. alors assurez-vous de ne pas utiliser
gameObject.find ("...") code> ou des appels de fonctions similaires dans la fonction
update () code> car il exécutera chaque image et Ralentissez votre jeu em>. Si le
gameObject code> n'est pas instancié alors que le jeu est en cours d'exécution, il est généralement préférable de faire une référence globale à tout
gameObject code> ou
composant code> que vous utilisez. Dans votre script, puis faites glisser-déposer le
gameObject code> avec le composant
code>, vous recherchez dans le champ de l'éditeur. Vous pouvez également utiliser
gameObject.find ("...") code> dans le
Démarrer () code> ou
éveil () code> Fonctions pour stocker une référence au
gameObject code> que vous recherchez, de sorte que la recherche ne se produit qu'une fois au début de votre jeu. p>
gameObject code>. Les différences entre l'utilisation d'un champ public vs un domaine privé sont expliquées dans les commentaires (vous pouvez décider d'utiliser public ou privé): p>
éveillé () code> Fonction: p>
GAMEObject CODE> Documentation ici pour plus d'informations. La recherche par type est moins efficace et la recherche de la balise est plus efficace que la recherche par nom, car les recherches de type Vérifiez chaque composant de chaque
gameObject code> et de recherche de balises Rechercher uniquement un
gameObject code> sous-ensemble . p> p>
La ligne ci-dessus indique que vous avez déjà le jeu.
@EDDGE J'ai une référence au GameObject mais je dois faire référence à une instance du gamebject ci-dessus. Pas le jeu d'origine
Je pense qu'il y a un malentendu ici. Tous les monobéhaviens ont une référence à leur gamebjects à l'aide de la variable GameObject. Donc, dans ce cas, vous dites
getComponent () code> à l'aide de gameObject. que les composants GameObject seront les mêmes. Maintenant, si vous voulez dire que vous voulez obtenir le monobéhavior de PlayPortalloginbutton qui figure sur un autre GameObject, vous voudriez utiliser FindObjectType, ou même donner à ce script une référence publique à cet objet.
GetComponent CODE> Obtient uniquement les composants de ce type sur ce jeu de jeu non composé de ce type sur d'autres objets de la scène. C'est pourquoi vous utiliseriez FindObjectType.
Ou gameObject.find ou diverses combinaisons de.