Поделиться через


Справочник по узлу визуального скрипта сетки

Перейдите в обзорную статью по визуальному скрипту

Интервал

На узле события интервала

Узел события On Interval активирует поток скрипта в регулярных интервалах времени, синхронизированных между всеми клиентами в одной комнате.

  • Интервал: интервал (в секундах) между событиями.
  • Задержка: задержка (в секундах) до первого события. Это можно использовать для взаимодействия событий с одинаковым интервалом , срабатываемым разными узлами on Interval .

Изменение состояния

На узле события

Узел события On State Changed активируется, когда любой из входных данных изменяет его значение. Это мощный механизм, позволяющий скриптам реагировать на изменения состояния, вызванные взаимодействием пользователя или другими визуальными скриптами, как локально, так и на других клиентах в одной комнате.

  • Значения: указывает количество входных портов, которые вы хотите наблюдать. Одновременно можно наблюдать до 10 входных портов. При изменении состояния активируется при изменении любого из них значения.
  • В 0, в 1 и больше в этой последовательности: входные данные, наблюдаемые для изменений состояния. Вы можете подключить любой узел данных к этим входным данным: получить переменную или любое свойство компонента (экземпляр или статический).
  • Out 0, Out 1 и многое другое в этой последовательности: выходные данные, соответствующие входным данным In 0 (и т. д.), возвращающие наблюдаемые значения.

При наблюдении за переменными скрипта или свойствами компонента изменение состояния обычно работает путем регистрации соответствующих обратных вызовов внутри системы, избегая постоянной повторной оценки входных данных. Если соответствующий обратный вызов недоступен, например в следующем примере, узел "Изменено состояние" становится красным, а панель инспектора графа предупреждает, что входные данные не могут наблюдаться эффективно и поэтому отключены:

Снимок экрана узла события

В этом случае можно выбрать параметр "Разрешить опрос" на панели инспектора графов, чтобы принудительно изменить состояние , чтобы обнаружить изменения, постоянно оценивая входные данные. Узел сохраняет желтую полосу в верхней части, чтобы напомнить вам, что она наблюдает входные данные при повышенной стоимости среды выполнения.

Снимок экрана узла события

Диалоговое окно "Показать"

Снимок экрана: узел действия

Узел "Показать диалоговое окно" отображает диалоговое окно с пользовательским сообщением и одним или несколькими кнопками, которые позволяют пользователю закрыть диалоговое окно.

  • Текст: сообщение, отображаемое в диалоговом окне. При необходимости текст сообщения будет обтекаться словом.
  • Кнопки: выбор кнопок для представления пользователю. Можно показать следующие кнопки: OK, Cancel, Yes, No, Confirm, Next, Retry, Continue, Leave.
  • Результат. Имя переменной для хранения ответа пользователя при закрытии диалогового окна, нажав кнопку. (Если оставить пустым, ответ удаляется.)
  • Цель: GameObject с компонентом Переменных для хранения ответа пользователя.

Если определена переменная результата, она будет сбрасываться на пустую строку сразу после ввода узла диалогового окна "Показать диалоговое окно" и асинхронно при нажатии кнопки, чтобы закрыть диалоговое окно. Хранимое значение — это нелокализованная метка кнопки из приведенного выше списка. Используйте узел события On State Changed, чтобы реагировать на ответ пользователя, как показано в следующем примере:

Снимок экрана: узел

Переменная результата может быть локальной или общей. Если это общий доступ, ответ пользователя отправляется всем клиентам в одной комнате, а узел события On State Changed активирует на всех клиентах реагирование на ответ пользователя.

Узлы событий физики

Узлы событий физики on Trigger Enter, On Trigger Exit, On Collision Enter и On Collision Exit надежно сетевые. По умолчанию эти события надежно активируются на всех клиентах в комнате; Однако если физический коллайдер, наблюдаемый этими узлами событий, находится в области компонента области локальной физики , события надежно активируются на одном клиенте. Это позволяет потокам скриптов, которые активируются для надежного чтения и записи общего состояния (например, обновления переменной общей оценки).

Безопасность

Сетка защищает пользователей от таких сценариев угроз:

  • Скомпрометированное содержимое сцены, например злоумышленники пытаются получить доступ к конфиденциальным локальным данным.
  • Скомпрометированный клиент или транспортный канал, например вредоносные попытки считывать или записывать недоступные удаленные данные на других клиентах.

Для этого Сетка запускает визуальные скрипты в песочнице (например, JavaScript в веб-браузере).

При запуске сцены Сетка использует проверенный список разрешений для проверки визуальных скриптов, чтобы ограничить доступ к определенным типам компонентов Unity и безопасному подмножеству их свойств.

Во время выполнения сцены Сетка ограничивает доступ к определенным частям сцены:

  • Локально: запрет доступа к внутренним компонентам Сетки и другим конфиденциальным данным.
  • Удаленно: проверив, что автор сцены намерен изменить эту часть сцены. Это делается путем статического анализа визуальных скриптов на стороне получателя для их потенциальных операций записи сцены.

Примеры:

  • Вредоносный локальный визуальный скрипт хочет дать всем аватарам боблые головы. В этом случае она пытается сканировать всю сцену для GameObjects, представляющих головы аватара. Сетка автоматически фильтрует результаты сканирования, чтобы исключить систему аватара.
  • Вредоносный удаленный клиент хочет разорвать сцену, перевернуть все GameObjects вверх с ног на голову. Для этого он отправляет обновление свойства, которое задает вертикальный масштаб каждого GameObject в сцене. Однако поскольку визуальный скрипт на принимающем клиенте не предназначен для выполнения таких действий, локальный клиент игнорирует удаленные входные данные.

См. также