Понедельник, 23 Декабря 2024, 14:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как избавиться от таких чисел в Transform в Инспекторе ?
robertonoДата: Воскресенье, 05 Апреля 2015, 18:32 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Начал постоянно наблюдать такой баг. В принципе это ничего не меняет, но глаза немного напрягает.
В общем мне не нравятся такие значения позиции:


По факту они равны нулю и если выделить и вписать ноль то ничего не поменяется, значение тоже.
Возникает это при использовании 4.6 UI и "примагничивании" к другим элементам при перемещении.
Версия 4.6.3 вроде.

Как можно это исправить? Кроме того, что можно сделать экстеншин, который будет фиксить такие дела (если экстеншин для редактора насильно передвинет объект на ноль то тогда там тоже будет ноль).
MANMANAДата: Понедельник, 06 Апреля 2015, 10:35 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
я бы попробовал так

Код
using UnityEngine;
using UnityEditor;
using System.Collections;

[CustomEditor(typeof(Transform))]

public class Allign : Editor  
{
  Transform obj;

  void Awake()
   {
    obj = target as Transform;
   }  
  void OnSceneGUI ()
   {
    if(obj.transform.position.x < (1.0e-05) && obj.transform.position.x > (-1.0e-05)) obj.transform.position = new Vector3(0,obj.transform.position.y,obj.transform.position.z);
    if(obj.transform.position.y < (1.0e-05) && obj.transform.position.y > (-1.0e-05)) obj.transform.position = new Vector3(obj.transform.position.x,0,obj.transform.position.z);
    if(obj.transform.position.z < (1.0e-05) && obj.transform.position.z > (-1.0e-05)) obj.transform.position = new Vector3(obj.transform.position.x,obj.transform.position.y,0);   
   }
}


код не тестил именно для e-0... ввиду отсутствия таковых в текущих проектах.
для обычных значений работает, причем для выбранного объекта, т.е. чтобы координаты объекты сбросились на ноль нужно выбрать объект хотя бы раз

можно вместо "1.0e-05" использовать превращение этого значения в строку, затем поиск e в строке, и если есть то... задавать новую позицию объекту. но это лишь размышления

Добавлено (06 апреля 2015, 10:35)
---------------------------------------------
кста, при помощи этого кода в инспекторе можно задавать запретные зоны, в которых не разрешается размещать объекты.

заменив if (obj.transform.position.x < (1.0e-05) && obj.transform.position.x > (-1.0e-05))... на obj.transform.position.x < (10.0f) && obj.transform.position.x > (-10.0f))....
и для оставшихся двух осей, то получим кубик 10х10х10, в который в редакторе не удастся разместить объект.
скрипт может быть улучшен, если учитывать размеры самого объекта, поскольку в настоящий момент учитывается лишь координата центра объекта (pivot егойный).

может, кому пригодится...


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг