Редактор Визуальной Логики Для Unity3D. Часть 2



Введение Здравствуйте дорогие читатели, в сегодняшней статье мне хотелось бы осветить тему базовой архитектуры редактора визуальной логики для Юнити3д .

Это вторая часть серии.

Вы можете прочитать предыдущую Здесь .

Итак, о чем мы будем говорить? В основе визуального редактора лежит базовое ядро, позволяющее запускать, загружать и хранить логические данные.

В свою очередь, ядро использует, как обсуждалось в предыдущей статье, СкриптаблеОбъект , как базовый класс для работы с логическими компонентами.

Давайте подробнее рассмотрим все эти аспекты.

Статьи из серии: → Редактор визуальной логики для Unity3d. Часть 1 → Редактор визуальной логики для Unity3d. Часть 3



Почему ScriptableObject?

Прежде чем приступить к разработке, я долго думал, на чем строить систему.

В своей самой первой форме они были МоноПоведение , но от этой идеи пришлось отказаться, так как эти скрипты должны висеть на Игровой объект , как компоненты.

Следующим шагом стала идея использования собственного класса, не являющегося потомком UnityEngine.Объект .

Но этот вариант не прижился, хотя и был вполне рабочим, но предполагал написание собственного сериализатора, инспектора, сборщика мусора и т.д. В итоге единственным разумным решением было использование СкриптаблеОбъект , жизненный цикл которого аналогичен МоноПоведение , если создание происходит во время работы приложения через ScriptableObject.CreateInstance .

Кроме того, вопрос использования JsonUtility (хотя это уже не проблема) и инспектор Единство .



Архитектура

Ниже приведена обобщенная схема того, из чего состоит ядро.

униженный .



Редактор визуальной логики для Unity3d. Часть 2

Давайте подробнее рассмотрим каждый элемент.

Контроллер

Контроллер является основным элементом ядра, который МоноПоведение скрипт (единственный во всей системе).

Класс контроллера является одноэлементным и доступен всем логическим компонентам.

Что делает этот класс:

  1. Хранит ссылки на объекты Единство
  2. Запускает логику в начале сцены
  3. Представляет доступ к методам для выполнения логики из внешних источников.

  4. Обеспечивает работу Мононуклеоз -методы в компонентах
Код класса базового контроллера
   

namespace uViLEd.Core { public partial class LogicController : MonoBehaviour { private static LogicController _instance; public static LogicController Instance { get { _instance = _instance ?? FindObjectOfType<LogicController>(); return _instance; } } [Serializable] public class SceneLogicData { public string Name; public TextAsset BinaryData => _data; public string Id => _id; [SerializeField] private string _id; [SerializeField] private TextAsset _data; public SceneLogicData(string id, string name, TextAsset binaryData) { _id = id; _data = binaryData; Name = name; } } [HideInInspector] public List<SceneLogicData> SceneLogicList = new List<SceneLogicData>();

Теги: #Разработка игр #unity #unity3d #визуальные скрипты #расширение редактора unity3d
Вместе с данным постом часто просматривают: