Слежение за изменением Transform Unity

226
07 августа 2018, 20:20

Как можно отследить, кто изменяет значения Transform у какого - нибудь объекта на сцене? В интернете есть ответы, но там они в основном состоят в том, чтобы оборачивать Transform еще в начале проекта в свойства, которые можно логировать. Но проект уже есть и большой, есть ли другой способ узнать, кто меняет значения моего Transform?

Answer 1

На удивление это очень просто!

Достаточно иcпользовать расширения (Extensions) для классов и включить смекалку!

Ваши действия будут состоять из трёх этапов:

  1. Создать скрипт TransformHelperLog и повесить на объект за которым хотите следить. (в нём можно ничего не писать)

  2. Создать скрипт под именем TransformExtensions (чуть ниже будет представлен его код)

  3. Во всём вашем проекте заменить обращение к трансформу .transform => .GetTransform() используя комбинацию клавиш (ctrl + shift + F)

Скрипт TransformExtensions выглядит так:

 public static class TransformExtensions {
     public static Transform GetTransform(this global::UnityEngine.Transform transform) {
        if(transform.GetComponent<TransformHelperLog>() != null) {
            Debug.Log("It's moving! " + transform.name);
        }
        return transform;
     }
 } 

Пример изменённого обращения гдето в разных скриптах:

void Update () {
   //someObject.transform.position += Vector3.left * Time.deltaTime; //было
   someObject.GetTransform().position += Vector3.left * Time.deltaTime; //стало      
}

Далее по логам сможете найти, кто меняет Transform. Как только найдёте кто меняет ваш трансформ, можете вернуть обращение к трансформу в изначальный вариант.

READ ALSO
Как сменить цвет таблицы в backpack for laravel?

Как сменить цвет таблицы в backpack for laravel?

Есть в админке таблица с отзывами

258
Как узнать время выполнения laravel 5.6

Как узнать время выполнения laravel 5.6

Как узнать время выполнения приложения laravel 56?

229
Отправка checkbox на почту через php

Отправка checkbox на почту через php

Первое скрипт, второе код формы, помогите пожалуйста розобраться как отправить выбранные элементы на почту

265