C# et UNITY problème de séléction
borg80
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je viens à vous pour un bête problème dont je n'arrive pas à comprendre le principe (Je débute sur Unity et C#).
Je cherche à effectuer deux actions lorsque le player rentre dans une zone :
- Afficher dans la console de debug : "La lampe est éteinte" (Ça marche bien)
- Éteindre la lampe de mon personnage (une SpotLight), qui est fixée sur une arme. La lampe reste allumée !
Je pense (C'est même sûr) que je cible mal la Light, de ce fait, rien ne se passe et j'ai même droit à une erreur que je ne comprend pas ...
Voici le code :
Voiçi le message d'erreur dont je n'ai pas compris les tenants et les aboutissants (Console de Degug):
Merci d'avoir pris le temps de me lire ! :) D'ailleurs, si vous aviez un bon tuto sur les balades dans le DOM sur C# & Unity, je suis preneur.
Je viens à vous pour un bête problème dont je n'arrive pas à comprendre le principe (Je débute sur Unity et C#).
Je cherche à effectuer deux actions lorsque le player rentre dans une zone :
- Afficher dans la console de debug : "La lampe est éteinte" (Ça marche bien)
- Éteindre la lampe de mon personnage (une SpotLight), qui est fixée sur une arme. La lampe reste allumée !
Je pense (C'est même sûr) que je cible mal la Light, de ce fait, rien ne se passe et j'ai même droit à une erreur que je ne comprend pas ...
Voici le code :
public class DeadPlayer : MonoBehaviour { private float ShutDown = 0f; void Start() { } //Extinction de la lampe au contact du player. Notez que les Tags sont bien attribués. void OnTriggerEnter (Collider EnterPlayer) { if(EnterPlayer.gameObject.tag == "Player"){ Debug.Log("La lampe est éteinte now"); //Ca, ca fonctionne GameObject.Find("lighttorch").GetComponent<Light>(); Light.intensity = ShutDown; } } }
Voiçi le message d'erreur dont je n'ai pas compris les tenants et les aboutissants (Console de Degug):
Assets/Scripts/DeadPlayer.cs(18,19): error CS0120: An object reference is required to access non-static member `UnityEngine.Light.intensity'
Merci d'avoir pris le temps de me lire ! :) D'ailleurs, si vous aviez un bon tuto sur les balades dans le DOM sur C# & Unity, je suis preneur.
A voir également:
- C# et UNITY problème de séléction
- Inverser selection excel - Forum Excel
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Variable workbook : l'indice n'appartient pas à la sélection ✓ - Forum Excel
- Illustrator cadre de sélection disparu ✓ - Forum Illustrator
- Outil sélection illustrator ne fonctionne pas - Forum Illustrator
5 réponses
La ligne 13 c'est
Un peu contradictoire non?
Debug.Log("La lampe est éteinte now"); //Ca, ca fonctionne
Un peu contradictoire non?
En ligne 13 j'ai :
Est-ce que tu ne serai pas en train de suivre le sujet sur un petit écran d'ordinateur ou un smartphone/tablette ? :p En réduisant ma fenêtre, je me suis rendu compte que le content du code était responsive. Du coup on ne doit pas avoir la même chose ^^
GameObject.Find("lighttorch").GetComponent<Light>();
Est-ce que tu ne serai pas en train de suivre le sujet sur un petit écran d'ordinateur ou un smartphone/tablette ? :p En réduisant ma fenêtre, je me suis rendu compte que le content du code était responsive. Du coup on ne doit pas avoir la même chose ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ha oui c'est vrai qu'il y a un bug avec les balises de codes sur ccm.
L'erreur veut dire qu'un objet ou une propriété d'un objet de cette ligne ne contient rien, n'a pas été initialisé, ne contient pas la référence vers l'espace mémoire d'un objet.
Plus haut tu utilises EnterPlayer.gameObject ou gameObject est une propriété de EnterPlayer et en plus commence par un entier minuscule (c# est sensible à la casse). Ne serait ce pas cet objet dont tu as besoin.
L'erreur veut dire qu'un objet ou une propriété d'un objet de cette ligne ne contient rien, n'a pas été initialisé, ne contient pas la référence vers l'espace mémoire d'un objet.
Plus haut tu utilises EnterPlayer.gameObject ou gameObject est une propriété de EnterPlayer et en plus commence par un entier minuscule (c# est sensible à la casse). Ne serait ce pas cet objet dont tu as besoin.