Можно ли заблокировать или переопределить координаты свойства масштаба игрового объекта в окне инспектора? - PullRequest
0 голосов
/ 26 июня 2018

Я хочу знать, возможно ли заблокировать или переопределить координаты X и Y свойства масштаба в окне инспектора, чтобы изменение одной координаты немедленно изменило другую, а очистка одной координаты изменила значение другой. Если да, как это можно сделать?

1 Ответ

0 голосов
/ 27 июня 2018

Как сказал @Eddge, атрибут ExecuteInEditMode - это способ сделать его возможным (см. документация для получения дополнительной информации).

Вот реализация (наивная) проверка концепции, которая блокирует x и y шкалы.

Редактировать : чтобы протестировать его, создайте новый компонент с этим кодом и присоедините его к объекту, который вы хотите применить. Затем установите / отмените поле isLocked для управления поведением.

using UnityEngine;

[ExecuteInEditMode]
public class AspectRatioLock : MonoBehaviour
{
  public bool isLocked;
  Vector3 prevScale;

  void Start()
  {
    prevScale = transform.localScale;
  }

  void Update()
  {
    var scale = transform.localScale;
    if (isLocked && scale.x != prevScale.x)
      transform.localScale = new Vector3(scale.x, scale.y * scale.x / prevScale.x, scale.z);
    else if (isLocked && scale.y != prevScale.y)
      transform.localScale = new Vector3(scale.x * scale.y / prevScale.y, scale.y, scale.z);
    prevScale = transform.localScale;
  }
}

На самом деле в Unity есть предварительная сборка AspectRatioFitter компонента , но она работает с RectTransform, поэтому она подходит для элементов пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...