[RESOLU][MY-AL]Edition Bloquer transform

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
EmileF
Messages : 676
Inscription : 18 Mars 2017 19:39

[RESOLU][MY-AL]Edition Bloquer transform

Message par EmileF » 27 Fév 2019 17:51

Bonjour à tous,

je cherche un moyen de bloquer la position d'un objet en mode Edition.
Je voudrai trouver un moyen pour empêcher qu'on puisse déplacer un objet que ce soit avec les flèches dans la scène, ou en modifiant les valeurs du transform. Ceci car j'ai besoin que cet objet reste à zéro afin de ne pas modifier les positions de ses enfants qui sont basées sur cette position zéro. et il m'arrive trop souvent de modifier la position de cet objet parent, accidentellement, en voulant déplacer un autre objet enfant. Et ça m'agace.

Si quelqu'un avait une idée....

J'ai essayé de mettre le transform à zero avec l'éditeur. Mon script corrige la position, mais une fois que le déplacement a été effectué et seulement si je sélectionne un objet parent ensuite. C'est pas super.

Voici le script que j'utilise:

Code : Tout sélectionner

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

[CustomEditor(typeof(ObjetFixe))]
public class ObjetFixeEditor : Editor
{

    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        ObjetFixe myobjet = (ObjetFixe)target;
        if (myobjet.transform.localPosition != Vector3.zero)
            myobjet.transform.localPosition = Vector3.zero;
    }
}
Merci à tous.
Dernière édition par EmileF le 27 Fév 2019 20:08, édité 1 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Littlekitykat
Messages : 40
Inscription : 22 Fév 2019 18:22
Contact :

Re: [MY-AL]Edition Bloquer transform

Message par Littlekitykat » 27 Fév 2019 19:25

Si tu es en mode édition pq veux tu ajouter du script ? Si je ne m'abuse le script n'est pris en copte que lorsque tu lance le jeu ?
Et juste au cas ou le mode édition soit le nom d'un module;

As tu essayé d'actualiser ta fonction dans Update() ? Comme cela il reprend la position zéro a chaque frame .
Pour ceux qui voudrait mon Cv ! :
https://scratch.mit.edu/users/littlekitykat/
Le reste a disparu depuis fort longtemps ^^

EmileF
Messages : 676
Inscription : 18 Mars 2017 19:39

Re: [MY-AL]Edition Bloquer transform

Message par EmileF » 27 Fév 2019 19:48

Littlekitykat a écrit :Si tu es en mode édition pq veux tu ajouter du script ? Si je ne m'abuse le script n'est pris en copte que lorsque tu lance le jeu ?
Si, si il y a moyen d'exécuter du code en mode édition en utilisant l'Using UnityEditor et avec l'extension Editor,
As tu essayé d'actualiser ta fonction dans Update()
ou avec le mode [ExecuteInEditMode] tu peux avoir accès a du code dans l'Update.
mais ce code n'est accessible que quand tu sélectionnes l'objet et après modification.
Donc, la modification de la position dans l'éditeur est appliquée, et elle sera corrigée quand tu résélectioneras l'objet si tu lui fais une autre modif, ou quend tu sélectionneras un parent de cet objet
Ce n'est pas ce que je veux, je veux tout simplement empécher la modif
Dernière édition par EmileF le 27 Fév 2019 19:52, édité 1 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

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

Re: [MY-AL]Edition Bloquer transform

Message par Max » 27 Fév 2019 19:52

Salut,

as tu regardé du coté des HideFlags, par exemple:

Code : Tout sélectionner

gameObject.hideFlags = HideFlags.NotEditable | HideFlags.HideInInspector;
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

EmileF
Messages : 676
Inscription : 18 Mars 2017 19:39

Re: [MY-AL]Edition Bloquer transform

Message par EmileF » 27 Fév 2019 19:54

Salut Max,

Je ne connais pas les HideFlags et je ne sais pas comment on les utilise, je vais voir ça.

Merci
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

EmileF
Messages : 676
Inscription : 18 Mars 2017 19:39

Re: [MY-AL]Edition Bloquer transform

Message par EmileF » 27 Fév 2019 20:08

Ok, merci Max

C'est exactement ce que je souhaitais.

J'ai mis le script en mode [ExecuteInEditMode]

et dans l'update

Code : Tout sélectionner

    private void Update()
    {
        if (!Application.isPlaying)
        {
            objetFixe.gameObject.hideFlags = HideFlags.NotEditable | HideFlags.HideInInspector;
        }
    }

ainsi quand je sélectionne l'objet, l'inspector est vide et il n'y a plus de flèche s sur l'objet dans la scène, donc impossible de modifier sa position en mode édition. Super :super:

Merci
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « (C#) CSharp »