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 :
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
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); } } |
Merci beaucoup pour cette fonctionnalité indispensable!!
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