Taille d’un gameObject

L’inconvénient dans Unity est que l’on ne connait pas la taille réelle d’un objet sur la scène. On a son scale qui est en fait une proportion mais sinon rien.

Et bien voici la solution trouvée sur le forum officiel. Il s’agit d’une classe en javascript ou en C# que vous nommerez ShowSize.js ou ShowSize.cs et que vous placerez dans un dossier « Editor » à la racine de l’onglet projet. Ainsi vous verrais apparaitre « Window/Show Size » dans le menu. En cliquant, cela ouvre une nouvelle fenêtre qui vous donnera la taille des objets de votre scène en cliquant sur ceux-ci. Chouette non ? 🙂

Les scripts :

?Download ShowSize.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class ShowSize extends EditorWindow {
 
   @MenuItem ("Window/Show Size")
   static function Init () {
      var sizeWindow = new ShowSize();
      sizeWindow.autoRepaintOnSceneChange = true;
      sizeWindow.Show();
   }
 
   function OnGUI () {
      var thisObject = Selection.activeObject as GameObject;
      if (!thisObject) {return;}
 
      var mf : MeshFilter = thisObject.GetComponent(MeshFilter) as MeshFilter;
      if (!mf) {return;}
 
      var mesh = mf.sharedMesh;
      if (!mesh) {return;}
 
      var size = mesh.bounds.size;
      var scale = thisObject.transform.localScale;
      GUILayout.Label("Size\nX: " + size.x*scale.x + "   Y: " + size.y*scale.y + "   Z: " + size.z*scale.z);
   }
}

et

?Download ShowSize.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System.Collections;
using UnityEngine;
using UnityEditor;
 
class ShowSize : EditorWindow
{
    [MenuItem("Window/ShowSize")]
    static void Init()
    {
        // Get existing open window or if none, make a new one:
        ShowSize sizeWindow = new ShowSize();
        sizeWindow.autoRepaintOnSceneChange = true;
        sizeWindow.Show();
    }
 
    void OnGUI () {
      GameObject thisObject = Selection.activeObject as GameObject;
      if (thisObject == null)
      {
          return;
      }
 
      MeshFilter mf = thisObject.GetComponent(typeof(MeshFilter)) as MeshFilter;
      if (mf == null)
      {return;}
 
      Mesh mesh = mf.sharedMesh;
      if (mesh == null)
      {return;}
 
      Vector3 size = mesh.bounds.size;
      Vector3 scale = thisObject.transform.localScale;
      GUILayout.Label("Size\nX: " + size.x*scale.x + "   Y: " + size.y*scale.y + "   Z: " + size.z*scale.z);
   }
 
}
avatar

krys64

bla bla bla

Vous aimerez aussi...

2 réponses

  1. avatar SevenDrill dit :

    Merci beaucoup pour cette fonctionnalité indispensable!!

  2. avatar Brother_soifran dit :

    Bonjour,
    Excellent, à coupler avec la création d’un cube de taille 1 qui servira de référence.
    Exemple, une porte fait environ 2 mètres de haut, ça permet de redimensionner rapidement tout type de bâtiment.
    Bon courage.

    Brother Soifran

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.