[RESOLU][DB-AL]Script qui agit dans la scène avant le lancement

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

[RESOLU][DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 29 Sep 2018 17:27

Salut, je suis bloqué sur un projet je souhaite agir dans la scène mais avant de lancer le jeu, si possible avec un script C#.

Exemple :
Sur un object Tortue j'ai mon script C# avec propriété publique mySize.
Quand je lance le jeu, si je modifier mySize la taille de l'objet augmente dans le Game et la Scene.
Par contre, hors du jeu ça ne modifie rien...
Je voudrais régler la taille de ma Tortue et voir le résultat avant de lancer le jeu. Il faut donc une fonction, méthode qui se répéte et pas qui se déclenche à l'ouverture de la Map.

J'ai crus un moment que les méthodes Awake, OnEnable... pourrai m'aider mais soit je m'y prend mal soit je ne cherche pas au bon endroit.

Merci de votre aide :)

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par Max » 29 Sep 2018 18:43

Bonjour,
eljeronimooo a écrit :
29 Sep 2018 17:27
Je voudrais régler la taille de ma Tortue et voir le résultat avant de lancer le jeu. Il faut donc une fonction, méthode qui se répéte et pas qui se déclenche à l'ouverture de la Map.
Je ne suis pas sûr de comprendre. Si tu souhaites régler la taille d'un élément avant de lancer le jeu, pourquoi ne pas le faire avec l'outil de 'scaling' de l'éditeur ?

PS: essais de faire un effort de rédaction, ainsi que sur l'orthographe. Merci.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 29 Sep 2018 19:41

Bonjour, oui évidemment le scale mais j'ai besoin de le modifier via un script et la raison est longue à expliquée et sans rapport avec le sujet.
Merci de ton aide.

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 29 Sep 2018 19:48

Je reformule pour plus clarté. Peut-on changer des valeurs via un script et en voir l'effet avant de lancer le jeu ?
Si oui, comment faire ? Merci par avance :)

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par Alesk » 29 Sep 2018 20:28

Salut,

Ton "lancer le jeu" n'est pas clair... Il va falloir préciser à quel moment précis tu fais référence. Le lancement de l'application ? Le chargement d'une scène ? L'exécution d'une fonction ?

Normalement, tu peux déjà faire ce que tu désire avec Awake ou OnEnable... Donc si ça ne fait pas ce que tu désires, il va falloir nous expliquer exactement le déroulement de ton programme et ce que tu veux faire vraiment.

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 29 Sep 2018 21:25

Je manque de vocabulaire dans le domaine, par lancer le jeu, je veux dire appuyer sur le bouton play en haut dans unity pour lancer le moteur et avoir un rendu dans l'onglet Game.
Je pense que ce que je cherche doit agir au chargement d'une scène et boucler (par exemple chaque seconde) pour avoir le résultat souhaité.
Le but (en gros) est de créer un éditeur de Map, qui avec des Prefabs comme Terrain, Moon, Cloud... et un script vont permettre d'éditer une map en mettant à la bonne échelle les Prefabs mais d'en voir le résultat directement dans la Scene sans lancer le jeu.

Voici un exemple pour illustré :

Code : Tout sélectionner

public class ControllerTerrain : MonoBehaviour {

    public Terrain terrain;
    public GameObject cloud;
    public int terrainWidth = 500;
    public int terrainLength = 500;
    public int terrainHeight = 500;
    
    	void Update () {
    		terrain.terrainData.size = new Vector3(terrainWidth, terrainHeight, terrainLength);
        	cloud.transform.localScale = new Vector3(terrainWidth * 2, terrainHeight * 2, terrainLength * 2);
    	    }
}


Si je règle terrainWidth à 1000 je ne verrai le rendu que dans le jeu et donc impossible de placer correctement mes arbres, mes rochers... dans ma Scene et ainsi construire mon univers.


Awake, OnEnable...

Code : Tout sélectionner

public class ControllerTerrain : MonoBehaviour {
   
    	void Awake() {
		Debug.Log("Test");
    	    }
}

Chez moi le Debug n'est lu qu'après le lancement du jeu... pourtant ici :
https://docs.unity3d.com/Manual/ExecutionOrder.html
On dirai bien que c'est la bonne méthode, mais je dois raté un truc...

Merci de ton aide ;)

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par Alesk » 30 Sep 2018 10:05

Ce que tu cherches à faire c'est un script qui tourne dans l'éditeur.
Donc il faut que tu fasses des recherches sur les mots clés "Unity editor scripting"

Exemple de ce que tu peux trouver :
https://code.tutsplus.com/tutorials/how ... tive-10047

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 01 Oct 2018 13:41

Ok merci, je regarde ça aujourd'hui ou demain et je reviens vers toi.
Merci pour ton aide.

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 02 Oct 2018 23:22

Salut, merci pour votre aide, problème réglé :)

Alors la fonction qui rempli l'usage désiré est OnDrawGizmos(), dans cet exemple "Salut" apparaît dès le chargement de l'éditeur, il faut juste placé le script ControllerTerrain sur un objet de la scène.

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ControllerTerrain : MonoBehaviour {
    	void Start () {

    }
        void Update() {

    }
        void OnDrawGizmos() {
		Debug.Log("Salut");
    }
}
Par contre, certaines fonctions ne sont pas compatible avec OnDrawGizmos, comme par exemple :

Code : Tout sélectionner

    	void Start () {
		GetComponent<Renderer>().material.SetColor("_TintColor", new Color(0, 0, 0, 0));
    }
Qui doit être remplacer par :

Code : Tout sélectionner

        void OnDrawGizmos() {
		GetComponent<Renderer>().sharedMaterial.SetColor("_TintColor", new Color(0, 0, 0, 0));
    }
Merci encore ;)

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Script qui agit dans la scène avant le lancement

Message par eljeronimooo » 02 Oct 2018 23:37

J'aurais aimer mettre le sujet en Resolu mais visiblement se sont les modérateurs qui ont la main là dessus

Répondre

Revenir vers « (C#) CSharp »