Editor Script: Snap to Grid

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Editor Script: Snap to Grid

Сообщение ffinder 01 сен 2009, 15:21

Выкладываю доработанный скрипт для выравнивания объектов по сетке.
Суть модификации: размеры ячеек сетки теперь соответствуют настройкам из окна Edit -> SnapSettings...
Починен мелкий, но пакостный баг с неработающим хоткеем (теперь Ctrl+G).
PS: документация этого момента отсутствует, пришлось лезть в реестр и искать самому.

(c#)

Синтаксис:
Используется cpp
using UnityEngine;
using UnityEditor;
using System.Collections;
 
public class SnapToGrid : ScriptableObject
{
    [MenuItem ("Edit/Snap to Grid %g")]
    static void MenuSnapToGrid()
    {
        Transform[] transforms = Selection.GetTransforms(SelectionMode.TopLevel | SelectionMode.OnlyUserModifiable);
       
        float gridx = EditorPrefs.GetFloat("MoveSnapX");
        float gridy = EditorPrefs.GetFloat("MoveSnapY");
        float gridz = EditorPrefs.GetFloat("MoveSnapZ");
       
        foreach (Transform transform in transforms)
        {
            Vector3 newPosition = transform.position;
            newPosition.x = Mathf.Round(newPosition.x / gridx) * gridx;
            newPosition.y = Mathf.Round(newPosition.y / gridy) * gridy;
            newPosition.z = Mathf.Round(newPosition.z / gridz) * gridz;
            transform.position = newPosition;
        }
    }
}


Как пользоваться (для тех кто не знает):
Создать папку Editor
В нее добавить этот скрипт (SnapToGrid.cs)
В редакторе выделяем объекты, которые нужно подогнать под сетку и нажимаем Ctrl+G
ffinder
UNITрон
 
Сообщения: 192
Зарегистрирован: 26 мар 2009, 17:35
  • Сайт

Re: Editor Script: Snap to Grid

Сообщение XtreemRus 05 мар 2010, 20:00

В Алгоритме происходит округление по позиции transform.
А возможно ли сделать округление по renderer.bounds.min?

Не могли бы подсказать алгоритм для этого?

Допустим округление через Mathf.Round производим по позиции renderer.bounds.min, а далее нужно посчитать transform для этого округленного значения, но я не знаю как вычислить это...
XtreemRus
UNец
 
Сообщения: 1
Зарегистрирован: 05 мар 2010, 19:44


Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1