0
votes

Comment: Obtenir une instance de GameObject

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. XXX

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.


5 commentaires

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 () à 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 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.


3 Réponses :


0
votes
GameObject button;
void Start() {
    button = GameObject.Find ("yourButtom");
}
void SomeEvent() {
    button.SetActive(false);   
}
I think you have to help to you

1 commentaires

Cette clone a préfabriqué, le bouton existe probablement déjà dans la scène



0
votes

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 GameObject devrait suffire depuis que c'est le jeu que le comportement est attaché à.

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: xxx

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.

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: xxx

dans le script ci-dessus si vous aviez besoin de GameObject de Loginbutton, vous pouvez maintenant y accéder via LoginButton.GameObject.

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.

Je mentionnerai aussi que j'évite l'exemple de GameObject .Find et gameObject.findgameObjectSwithTag 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.

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.


0 commentaires

1
votes

Voici une façon, vous pouvez trouver un composant sur un gameObject dans la scène, où "PORTALLOGINBUTON" est le nom du gameObject comme indiqué dans l'éditeur: < Pré> xxx

Cependant, gameObject.find ("...") recherche le nom de chaque gameObject dans la scène, et ceci n'est pas Habituellement, le meilleur moyen de faire référence à un gameObject car il n'est pas très efficace. alors assurez-vous de ne pas utiliser gameObject.find ("...") ou des appels de fonctions similaires dans la fonction update () car il exécutera chaque image et Ralentissez votre jeu . Si le gameObject 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 ou composant que vous utilisez. Dans votre script, puis faites glisser-déposer le gameObject avec le composant , vous recherchez dans le champ de l'éditeur. Vous pouvez également utiliser gameObject.find ("...") dans le Démarrer () ou éveil () Fonctions pour stocker une référence au gameObject que vous recherchez, de sorte que la recherche ne se produit qu'une fois au début de votre jeu.

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 gameObject . 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é): xxx

Voici un exemple de la façon dont vous pouvez Utilisez gameObject.find ("...") dans le éveillé () Fonction: xxx


Si vous devez rechercher < Code> gameObjects dans votre scène par type ou par nom de balise, reportez-vous au nom GAMEObject 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 et de recherche de balises Rechercher uniquement un gameObject sous-ensemble .


0 commentaires