Modifier une variable d'un script depuis un autre
Modifier une variable d'un script depuis un autre
Bonsoir, j'ai un jeu de plateforme avec un compteur qui tourne pour savoir le temps que met le joueur à finir le niveau. J'ai mis un emptyObject associé avec un boxCollider(en tant que trigger) sur la dernière plateforme, ce qui permet de repérer quand le joueur arrive à la fin du niveau.
Ce que j'aimerais faire c'est remettre le compteur à 0 lorsque le joueur arrive à la fin. Je met donc un script JS que j'associe à l'emptyObject(celui représentant l'arrivé donc), et qui contient une fonction OnTriggerEnter().
La fonction est bien appelé lorsque le joueur arrive sur la plateforme, mais le compteur se situe dans un autre script(le script contrôlant le joueur). J'aimerais donc savoir comment le remettre à 0(c'est à dire comment accéder à la variable situé dans le script de contrôle du joueur, depuis le script de l'emptyObject)? Ou bien je m'y suis mal pris et je devrais plutôt tout faire en un script(si oui comment?)?
Merci.
Ce que j'aimerais faire c'est remettre le compteur à 0 lorsque le joueur arrive à la fin. Je met donc un script JS que j'associe à l'emptyObject(celui représentant l'arrivé donc), et qui contient une fonction OnTriggerEnter().
La fonction est bien appelé lorsque le joueur arrive sur la plateforme, mais le compteur se situe dans un autre script(le script contrôlant le joueur). J'aimerais donc savoir comment le remettre à 0(c'est à dire comment accéder à la variable situé dans le script de contrôle du joueur, depuis le script de l'emptyObject)? Ou bien je m'y suis mal pris et je devrais plutôt tout faire en un script(si oui comment?)?
Merci.
Re: Modifier une variable d'un script depuis un autre
pas sur de la syntaxe en Js mais en C# ca donne
ta variable doit etre public sinon tu ne pourra pas y acceder.
Code : Tout sélectionner
TonObjetPlayer.GetComponent<TonScriptControlJoueur>().TaVariable = 0;
Re: Modifier une variable d'un script depuis un autre
Merci ça marche
Re: Modifier une variable d'un script depuis un autre
Bonjour, j'ai a peu près le même soucis, j'aimerais modifier le boolean d'un script depuis un autre script seulement, si je met : MonObjetPlayer.GetComponent<MonScriptControlJoueur>().NomDuBoolean = true;
je reçois plusieurs messages d'erreur, comment faire pour les boolean ?
ps : mon script est en C #
je reçois plusieurs messages d'erreur, comment faire pour les boolean ?
ps : mon script est en C #
Re: Modifier une variable d'un script depuis un autre
C'est récurent comme demande.NICOO96 a écrit :Bonjour, j'ai a peu près le même soucis, j'aimerais modifier le boolean d'un script depuis un autre script seulement, si je met : MonObjetPlayer.GetComponent<MonScriptControlJoueur>().NomDuBoolean = true;
je reçois plusieurs messages d'erreur, comment faire pour les boolean ?
ps : mon script est en C #
a) Il manque ton script
b)
Code : Tout sélectionner
// PremierScript .cs
using UnityEngine;
using System;
public class PremierScript : MonoBehaviour
{
public bool afficheResult = false;
public int intDuPremier = 10;
public bool boolDuPremier = false;
public float floatDuPremier = 96.98f;
public void fonctionDuPremier()
{
Debug.Log("Coucou. Int = " + intDuPremier);
Debug.Log("Coucou. bool = " + boolDuPremier);
Debug.Log("Coucou. float = " + floatDuPremier);
}
}
Code : Tout sélectionner
// ScriptDeux .cs
using UnityEngine;
using System;
public class ScriptDeux : MonoBehaviour
{
private PremierScript lienVersPremierScript;
void Start()
{
lienVersPremierScript = GetComponent<PremierScript>();
lienVersPremierScript.intDuPremier = 12345;
lienVersPremierScript.boolDuPremier = true;
lienVersPremierScript.floatDuPremier = 45.67f;
}
void Update()
{
if (lienVersPremierScript.afficheResult) lienVersPremierScript.fonctionDuPremier();
}
}
- boubouk50
- ModoGenereux
- Messages : 6243
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Modifier une variable d'un script depuis un autre
Un joli déterrage de 7 ans
(ça fait plaisir de voir que certains membres font une recherche poussée avant de poster).
Ça doit être la question la plus fréquemment posée sur ce forum, tu trouveras sinon, ZJP t'a tout indiqué le chemin.
(ça fait plaisir de voir que certains membres font une recherche poussée avant de poster).
Ça doit être la question la plus fréquemment posée sur ce forum, tu trouveras sinon, ZJP t'a tout indiqué le chemin.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Modifier une variable d'un script depuis un autre
Merci pour la réponse rapide, effectivement les 2 script sont a placer sur le même GO, seulement mon soucis c'est que je veux que la camera suive mon Player, et que dès que le collider de mon Player rentre dans dans certain collider, la camera face un zoom ou une rotation, du coup les deux script ne sont pas sur le même GO.
Voici le script pour le Player :
C'est pourquoi je voulais mettre la ligne
Camera.GetComponent<ten2>().zoom1 = true;
dans le OnTriggerEnter et
Camera.GetComponent<ten2>().zoom1 = false;
dans le OnTriggerExit
mais ça me mettait des messages d'erreur
Les balises code SVP
Merci de lire la Netiquette.
Voici le script pour le Player :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ten1 : MonoBehaviour
{
public bool zoom = false;
void OnTriggerEnter(Collider other)
{
zoom1 = true;
}
void OnTriggerExit(Collider other)
{
zoom1 = false;
}
}
Le script pour la camera :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ten2 : MonoBehaviour
{
public GameObject Player;
private Vector3 offset;
private Vector3 zoom;
public bool zoom1 = false;
void Start ()
{
offset = transform.position - Player.transform.position;
zoom = new Vector3 (0, 0, 40);
}
void Update ()
{
if (zoom1) transform.position = Player.transform.position + offset + zoom;
else transform.position = Player.transform.position + offset;
}
}
Camera.GetComponent<ten2>().zoom1 = true;
dans le OnTriggerEnter et
Camera.GetComponent<ten2>().zoom1 = false;
dans le OnTriggerExit
mais ça me mettait des messages d'erreur
Les balises code SVP
Merci de lire la Netiquette.
- boubouk50
- ModoGenereux
- Messages : 6243
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Modifier une variable d'un script depuis un autre
Il te faut référencer ta caméra (ou son script) dans ton script Player, sinon comment il peut savoir où il doit changer zoom1?
puis accéder à sa variable:
A noter en faisant le GetComponent () qu'il vaut mieux le stocker quelque part (donc mieux passer par le script directement, solution 2) et le tester pour savoir s'il existe bien sinon ça lèvera une erreur.
Code : Tout sélectionner
public Camera cam;
ou
public ten2 camTen;
Code : Tout sélectionner
void OnTriggerEnter(Collider other)
{
cam.GetComponent <ten2> ().zoom1 = true;
}
ou
void OnTriggerEnter(Collider other)
{
camTen.zoom1 = true;
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Modifier une variable d'un script depuis un autre
Ouiiii merci pour l'aide ça marche .