Структура проекта
Структура файлов и папок
При создании проекта в среде Varwin автоматически формируется следующая иерархия файлов и директорий:
├── Blockly.py
├── Main.py
└── Varwin/
├── Varwin.py
├── SceneObjectTypes.py
├── SceneObjects.py
└── Objects/
Каждый элемент этой структуры играет определённую роль в архитектуре приложения.
Blockly.py
Тип файла: только для чтения
Назначение: содержит логику, сгенерированную визуальным редактором блоков (Blockly).
Этот модуль автоматически обновляется при изменении в визуальном редакторе.
Main.py
Тип файла: редактируемый
Назначение: основная точка входа в приложение.
Этот файл предназначен для подключения пользовательских модулей, расширения или переопределения поведения, заданного в Blockly.py, а также для реализации кастомной логики.
Пример содержимого:
import Varwin
from SceneObjects import *
import Blockly
async def OnStart():
# Пользовательская инициализация при запуске сцены
pass
async def OnUpdate():
# Логика, выполняемая зацикленно
pass
# Регистрация пользовательских обработчиков
Varwin.Async.AddStart(OnStart)
Varwin.Async.AddUpdate(OnUpdate)
Varwin.py
Тип файла: только для чтения
Назначение: предоставляет API для взаимодействия с объектами сцены, системными событиями и служебными функциями.
Основные возможности:
Управление жизненным циклом сцены (например,
Varwin.Async.AddStart)Отладочный вывод (
Varwin.Debug.Log)Доступ к объектам сцены
Реализация корутин
Стандартные поведения
Полный перечень доступных классов, функций и методов с сигнатурами, параметрами и примерами использования приведён в разделе:
SceneObjectTypes.py
Тип файла: только для чтения
Назначение: маппинг технических имён типов объектов на удобочитаемые псевдонимы.
Внутренние имена объектов имеют формат <C#_TypeName>_<Root_GUID>. Этот модуль заменяет их на короткие и понятные имена.
Предупреждение
Если в проекте обнаружены конфликтующие имена (два разных типа с одинаковым псевдонимом), система автоматически использует полное имя с GUID, чтобы избежать неоднозначности.
SceneObjects.py
Тип файла: только для чтения
Назначение: содержит экземпляры всех объектов, размещённых на сцене.
Каждый объект представлен как переменная с именем, заданным в поле «Имя переменной» в редакторе сцены.
Пример:
from SceneObjectTypes import *
# В редакторе сцены задано имя переменной: player
player = PlayerWrapper(...)
Этот модуль автоматически генерируется и обновляется при изменении сцены.
Совет
Используйте from SceneObjects import * в Main.py или других модулях
для прямого доступа к объектам по их именам.
Пользовательские модули
Тип файла: редактируемый
Назначение: расширение функциональности приложения.
Varwin поддерживает модульную архитектуру, позволяя разделять логику на независимые Python-файлы.
Преимущества:
Читаемость: каждая функциональная область вынесена в отдельный файл.
Изоляция: каждый модуль имеет собственное пространство имён.
Повторное использование: модули легко импортировать в других проектах.
Автоматическая загрузка: платформа управляет порядком инициализации (при отсутствии циклических зависимостей).
Как использовать:
Создайте новый Python-файл (например,
movement.py).Реализуйте в нём нужную логику.
Импортируйте модуль в
Main.pyили другом месте.
Пример:
Файл MyModule.py:
import Varwin
def hello():
Varwin.Debug.Log("Привет, Мир!")
Файл Main.py:
import Varwin
import MyModule
async def OnStart():
MyModule.hello()
Varwin.Async.AddStart(OnStart)
Совет
Группируйте связанную логику в отдельные модули:
movement.py— управление перемещением объектовsensors.py— обработка данных с датчиковui.py— взаимодействие с пользовательским интерфейсомai.py— поведенческие алгоритмы